0

次のメソッドは、アプリケーションのホームページのすべてのリンクをクリックし、それらが機能していることを検証します。問題は、ページのログアウト リンクです。クリックすると、テストが失敗することが想像できます。ログアウト リンクのチェックを無視または削除する方法はありますか? 参考までに、ログアウトは配列の最初の要素です。どんな助けでも大歓迎です

public void checkAllLinks() {

    driver.switchTo().defaultContent().switchTo().frame("mainFrame");
    List<WebElement> linkElements = driver.findElements(By.tagName("a"));

    String[] linkTexts = new String[linkElements.size()];

    int i = 0;

    // extract the link texts of each link element

    for (WebElement e : linkElements) {

        logger.info(linkTexts[i] = e.getText());

        i++;

    }
    for (String l : linkTexts) {

        driver.findElement(By.linkText(l)).click();

        if (driver.getTitle().equals(title)) {

            System.out.println("\"" + l + "\""

            + " is not Working.");

        } else {

            System.out.println("\"" + l + "\""

            + " is working.");

        }

        driver.navigate().back();

    }
}
4

3 に答える 3

1

すべてのリンクをクリックする前に、リストからログアウト リンクを削除します。

  List<WebElement> linkElements = driver.findElements(By.tagName("a"));

  int logoutlinkIndex;

  for (WebElement linkElement : linkElements) {
           if (linkElement.getText().equals("Log out link text")) {
                       logoutlinkIndex = linkElements.indexOf(linkElement);
                       break;
            }

  }

 linkElements.remove(logoutlinkIndex);
于 2013-07-24T08:35:36.933 に答える
0

開始ページに移動する (必要に応じてログインする) 関数が必要です (最適なオプションはページ オブジェクトを使用することですが、それにはプロジェクトでより多くの設定が必要です)。

を使用するのではなく、driver.navigate().back()その機能を使用します。

(ログオンページにいるかどうかをテストする方法がわからない場合は、ページ上の要素を見つけてキャッチしますNoSuchElementException

于 2013-07-24T04:49:58.733 に答える
0

それが最初であることがわかっている場合は、カウントを追加して最初をスキップします。

i = 0;
for (String l : linkTexts) {
    if (i > 0) {
        // ...
    }
    i++;
}
于 2013-07-24T04:34:31.680 に答える