我正在尝试验证网页上的所有链接是否正常工作。如何忽略注销链接

时间:2013-07-24 04:29:13

标签: selenium webdriver

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

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();

    }
}

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

i = 0;
for (String l : linkTexts) {
    if (i > 0) {
        // ...
    }
    i++;
}

答案 2 :(得分:0)

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

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

(如果您无法找到测试登录页面的方法,请在页面上找到一个元素,并抓住NoSuchElementException