我有一个需要硒导航到下一页并验证是否找到了所需信息的应用程序,找不到它,然后回到同一页面,然后单击下一个用户信息并验证是否找到了所需信息,这一过程一直持续到我们拥有用户链接为止。
我的过程:我创建了所有用户链接列表,以运行增强版for循环。现在,当用户单击第一个用户链接并且如果找不到除硒之外的信息又回到同一页面时,并且当尝试单击第二个用户时,它将给出异常'org.openqa.selenium.StaleElementReferenceException:stale element reference:element is未附加到页面文档”。我尝试使用back()方法,但无法正常工作。有什么解决办法吗?
谢谢,
卡里姆
最佳答案
之所以出现StaleElementReferenceException,是因为您尝试向后导航时DOM元素为destroyed and recreated。
因此,我建议您从原始页面获取用户链接的所有href
属性,并导航至每个链接,而不是单击尝试一个一个地单击链接,这将总是抛出StaleElementReferenceException。
以下是获取页面中所有链接列表的方法(当然,您可以将其缩小为所需的元素;这只是一个示例):
//Getting the list of all links in the page
List<WebElement> list = driver.findElements(By.tagName("a"));
//Getting the "href" attribute of each elements and putting them into another list
List<String> href_links = null;
for(WebElement link:list){
href_links.add(link.getAttribute("href"));
}
//Navigating through each links
for(int i=0;i<href_links.size();i++){
driver.get(href_links.get(i));
}