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