Selenium webdriver “线程中的异常”;“主要”;org.openqa.selenium.StaleElementReferenceException:缓存中不存在元素

Selenium webdriver “线程中的异常”;“主要”;org.openqa.selenium.StaleElementReferenceException:缓存中不存在元素,selenium-webdriver,Selenium Webdriver,当我试图单击循环中的元素时,我收到了StaleElementReferenceException。代码如下: WebDriver driver=new ChromeDriver(); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.manage().window().maximize(); driver.navigate().to("URL"); WebElement Links=driver.fin

当我试图单击循环中的元素时,我收到了
StaleElementReferenceException
。代码如下:

WebDriver driver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.manage().window().maximize();

driver.navigate().to("URL");
WebElement Links=driver.findElement(By.xpath("//*[@id='chromemenu']"));
List <WebElement> AllLinks=Links.findElements(By.tagName("a"));
System.out.println(AllLinks.size());
//String start_xpath="//*[@id='chromemenu']/ul/li[";     
//String end_xpath="]/a";

for(int i=1;i<AllLinks.size();i++)
{
    System.out.println(AllLinks.get(i).getText());
    System.out.println(AllLinks.get(i).getAttribute("href"));
    //AllLinks.get(i).click();
        //This is where i am clicking  approach 1
    //driver.findElement(By.xpath(start_xpath+i+end_xpath)).click(); 
        //This is where i am clicking  approach 2
    //driver.navigate().back();
}
WebDriver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.navigate()指向(“URL”);
WebElement Links=driver.findElement(By.xpath(“/*[@id='chromemenu']”);
列出所有链接=Links.findElements(按.tagName(“a”));
System.out.println(AllLinks.size());
//字符串start_xpath=“/*[@id='chromemenu']/ul/li[”;
//字符串end_xpath=“]/a”;

对于(int i=1;i而言,问题在于您试图在循环列表时单击链接。
您应该将链接保存在另一个元素中,并在循环完成后单击它以避免此错误

我添加了WebElement Links1=driver.findElement(By.xpath(“/*[@id='chromemenu']”);列出所有Links1=Links1.findElements(By.tagName(“a”));在我的循环中,它开始工作。我不认为在你的循环中添加Links1和AllLinks1声明与此有关。这可能是一个时间问题吗?我怀疑你在页面仍在加载时,正在快速单击一个链接,然后快速单击下一个链接。我建议查看WebDriverWait