我想在页面上找到损坏的链接。
但是我在第二次迭代时遇到错误当我尝试点击第二个链接时(检查页面上已损坏的链接)
StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up Command duration or timeout: 47 milliseconds"
这是我的代码:
WebElement element =driver.findElement(By.tagName("a"));
List<WebElement> links = driver.findElements(By.tagName("a"));
System.out.println(links.size());
for (int index=0; index<links.size(); index++ ) {
links.get(index).click();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.getTitle();
driver.navigate().back();
}
任何人都可以告诉我我犯了错误吗?
答案 0 :(得分:1)
我认为你不能在页面上存储元素,浏览,然后回来使用它们。每次到达新页面时,都需要再次选择它们(有点刷新)。
尝试这样的事情
for (int index=0; index<links.size(); index++ ) {
links = driver.findElements(By.tagName("a"));
links.get(index).click();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.getTitle();
driver.navigate().back();
}
答案 1 :(得分:0)
如果页面重新加载链接(webelements列表)将失去保持点击下一个元素。
您可以执行以下操作,点击循环中的每个链接。
WebElement element =driver.findElement(By.tagName("a"));
List<WebElement> links = driver.findElements(By.tagName("a"));
System.out.println(links.size());
for (int index=0; index<links.size(); index++ ) {
driver.findElements(By.tagName("a")).get(i).click(); //this is what I've change
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.getTitle();
driver.navigate().back();
}