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

Selenium I';我正在尝试验证网页上的所有链接是否正常工作。如何忽略注销链接,selenium,webdriver,Selenium,Webdriver,下面的方法单击应用程序主页的所有链接并验证它们是否正常工作。问题是页面上的注销链接,正如您可以想象的那样,一旦我单击它,测试就会失败。是否有一种方法可以忽略或删除对注销链接的检查?仅供参考注销是数组中的第一个元素。谢谢你的帮助 public void checkAllLinks(){ driver.switchTo().defaultContent().switchTo().frame(“大型机”); List linkElements=driver.findElements(按.tagName

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

public void checkAllLinks(){

driver.switchTo().defaultContent().switchTo().frame(“大型机”);
List linkElements=driver.findElements(按.tagName(“a”));
String[]LinkText=新字符串[linkElements.size()];
int i=0;
//提取每个链接元素的链接文本
for(WebElement e:linkElements){
logger.info(linktext[i]=e.getText());
i++;
}
用于(字符串l:链接文本){
driver.findElement(By.linkText(l)).click();
if(driver.getTitle().equals(title)){
System.out.println(“\”+l+“\”)
+“不起作用。”);
}否则{
System.out.println(“\”+l+“\”)
+“正在工作。”);
}
driver.navigate().back();
}
}

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

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

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

不要使用
driver.navigate().back()
,而是使用该函数

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

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

  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);
List linkElements=driver.findElements(按.tagName(“a”));
int-logoutlinkIndex;
for(WebElement-linkElement:linkElements){
if(linkElement.getText().equals(“注销链接文本”)){
logoutlinkIndex=linkElements.indexOf(linkElement);
打破
}
}
linkElements.remove(logoutlinkIndex);
  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);