【发布时间】:2017-04-15 08:59:42
【问题描述】:
我想在亚马逊上搜索一个主题,然后在给定的书籍列表中逐一执行特定操作。我做了以下事情:
WebDriver driver= new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.amazon.com");
driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Operating System Books");
driver.findElement(By.className("nav-input")).click();
links = driver.findElements(By.className("s-access-detail-page")); //try to cache this
for(WebElement link : links) {
//System.out.println(String.format(link.getAttribute("href"))); //prints
link.click();
//extract reviews and one by one forward to semantic analysis
driver.navigate().back();
}
}
但是,此链接转到第一个链接,然后返回列表页面。然后程序终止并出现以下错误: 线程“main”中的异常 org.openqa.selenium.StaleElementReferenceException:过时的元素引用:元素未附加到页面文档
【问题讨论】:
-
出现此异常是完全正常的:
StaleElement表示您尝试引用的元素不再位于活动浏览器窗口中。考虑到您已经导航到其他页面,然后又导航回来,上一页中的任何元素都不应再处于活动状态。您要么必须重新搜索或在新窗口中打开链接,因此您的原始窗口在另一个浏览器选项卡中仍然完好无损。
标签: java selenium selenium-webdriver