Java &引用;StaleElementReferenceException:在缓存中找不到元素-可能页面在查找后已更改

Java &引用;StaleElementReferenceException:在缓存中找不到元素-可能页面在查找后已更改,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我想找出页面上断开的链接 但当我试图点击第二个链接(检查页面上的断开链接)时,我在第二次迭代中遇到了一个错误 这是我的密码: WebElement element =driver.findElement(By.tagName("a")); List<WebElement> links = driver.findElements(By.tagName("a")); System.out.println(links.size()); for (int ind

我想找出页面上断开的链接

但当我试图点击第二个链接(检查页面上的断开链接)时,我在第二次迭代中遇到了一个错误

这是我的密码:

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

       } 
WebElement=driver.findElement(按.tagName(“a”));
列表链接=driver.findElements(按.tagName(“a”));
System.out.println(links.size());

对于(int index=0;index我认为您不能在页面上存储元素、浏览然后再回来使用它们。每次到达新页面时,您都需要再次选择它们(类似于刷新)

试试这样的

   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(); 
   } 
for(int index=0;index如果页面重新加载链接(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(); 

 } 
WebElement=driver.findElement(按.tagName(“a”));
列表链接=driver.findElements(按.tagName(“a”));
System.out.println(links.size());
对于(int index=0;的不可扩展副本)
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(); 

 }