gpt4 book ai didi

java - 如何处理 StaleElementReferenceException

转载 作者:行者123 更新时间:2023-12-02 02:54:41 26 4
gpt4 key购买 nike

我正在为鼠标悬停工作,我想通过使用 for 循环单击每个链接来测试所有链接的工作状况。在我的程序中,迭代进行一次,而对于下一次迭代,它不起作用并显示“StaleElementReferenceException”............如果需要,请修改代码......

public static void main(String[] args) throws IOException 
{
WebDriver driver = new FirefoxDriver();
Autoit.Authenti(driver);
driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);

driver.get("http://staging.zenrays.com");


Actions a1=new Actions(driver);
WebElement cl=driver.findElement(By.xpath(".//*[@id='menu-450-2']/a"));
a1.moveToElement(cl).perform();

WebDriverWait wait =new WebDriverWait(driver, 30);



List<WebElement> links=driver.findElements(By.xpath("//a[contains(@class,'sf-depth-2')]"));

for(int i=0;i<=links.size()-1;i++)
{

links.get(i).click();

driver.navigate().back();

}
}
}

最佳答案

了解一件基本的事情:staleElementReferenceException,顾名思义,页面上对元素的引用已经过时(丢失)。您只需再次引用这些元素(如果它们可用),这在这种情况下很合适,因为页面已刷新。做两件事:

  1. 刷新页面后(当您返回时),使用显式等待,直到您期望的元素可见
  2. 然后,重新引用您想要再次使用的元素(您使用过的 xpath 定位器)
  3. 在这些场景中使用 try-catch block 作为干净、优雅的代码

我不会直接给你代码:)尝试一下然后返回你的代码。

引用here因为它清楚地解释了此特定异常的可能情况

还有一件事:您的 for 循环给出了 IndexOutOfBoundsException。也修改一下

关于java - 如何处理 StaleElementReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com