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



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

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

在点击所有链接之前,从列表中删除注销链接

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

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

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

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

与其使用driver.navigate().back(),不如使用该函数。

(如果您无法找到一种方法来测试您是否在登录页面上,请在页面上找到一个元素,然后捕获NoSuchElementException

最新更新