0

以下方法单击我们应用程序主页的所有链接并验证它们是否正常工作。问题是页面上的注销链接,正如您可以想象的那样,一旦我单击它,他们的测试就会失败。有没有办法可以忽略或删除注销链接的检查?仅供参考,注销是数组中的第一个元素。任何帮助表示赞赏

公共无效 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

如果您知道这是第一个,那么添加一个计数并跳过第一个:

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

您应该有一个可以转到起始页面的功能(并在必要时登录。(最好的选择是使用页面对象,但这需要对您的项目进行更多设置)

而不是使用driver.navigate().back(),使用该功能。

(如果你想不出一种方法来测试你是否在登录页面上,在页面上找到一个元素,然后 catch NoSuchElementException

于 2013-07-24T04:49:58.733 回答