我有下面的代码,它获取一个元素列表,然后在使用driver.navigate(). back();
List<WebElement> listingWebElementList = driver.findElements(By.xpath("(//span[@id='titletextonly'])"));
for (WebElement listingElement : listingWebElementList)
{
Thread.sleep(5000);
listingElement.click();
Thread.sleep(5000);
driver.navigate().back();
}
在第二轮循环中,当使用chromedriver时,我得到以下错误
org.openqa.selenium.:过时的元素引用:元素没有附加到页面文档
我发现FirefoxDriver有以下错误
组织。openqa。硒。StaleElementReferenceException:在缓存中找不到元素-可能页面在查找后已更改
可以使用驱动程序。导航()。背()
不能在上述循环中使用?
出现问题的原因是,当您再次导航回时,该元素不再有效。要避免这种情况,请使用以下代码:
List<WebElement> listingWebElementList = driver.findElements(By.xpath("(//span[@id='titletextonly'])"));
int size = listingWebElementList.size();
for (int i=0;i<size;i++)
{
List<WebElement> listingWebElementListInLoop = driver.findElements(By.xpath("(//span[@id='titletextonly'])"));
Thread.sleep(5000);//don't use this kind of wait. wait using until.
listingWebElementListInLoop.get(i).click();
Thread.sleep(5000);
driver.navigate().back();
Thread.sleep(2000);
}
当DOM更改或刷新驱动程序时,它会丢失之前定位的所有WebElements。您需要在循环的每个迭代中重新定位列表
int size = 1;
for (int i = 0 ; i < size ; ++i) {
List<WebElement> listingWebElementList = driver.findElements(By.xpath("(//span[@id='titletextonly'])"));
size = listingWebElementList.size();
Thread.sleep(5000);
listingWebElementList.get(i).click();
Thread.sleep(5000);
driver.navigate().back();
}
您可以使用索引继续跟踪列表中的位置。
问题内容: 在硒测试中出现以下错误 我所做的是 环境: Firefox v47.0 Webdriver 3.0.0-beta2 问题答案: 这是完全可以预期的。没有GeckoDriver(木偶)的发行版支持该类。这是Mozilla团队开发Marionette的首要任务之一。
我得到了下面的错误,如果我开始执行程序。 线程“main”org.openqa.selenium.remote.UnreachableBrowserException中的异常:无法启动新会话。可能的原因是远程服务器的地址无效或浏览器启动失败。构建信息:版本:“2.53.0”,修订版本:“35ae25b”,时间:“2016-03-15 16:57:40”
我见过很多关于等待Selenium Web驱动程序(专门针对Java)的方法(比如这一个)。然而,应用这里的方法似乎并不奏效。 我试图通过在哈希表中的值中循环来测试用户查询结果。我在下面的代码中尝试了两种方法:等待Document.ReadyState和等待Class选择的项的加载。然而,看起来列表是在创建all,而没有留下完成元素刷新的时间。 我有时会出现以下错误,实际上可能是元素更新的时候。我
Html代码: 结果: 在com.example.tests.finalizepo.main(finalizepo.java:41)的org.openqa.selenium.support.ui.webdriverwait.timeoutexception(webdriverwait.java:80)直到(fluentwait.java:261)由:org.openqa.selenium.nosu
我使用python脚本,它传递给卡桑德拉批处理查询,如下所示: 这是一段时间的工作,但在启动脚本失败并打印后约2分钟内: 我将超时从 更改为: read_request_timeout_in_ms:15000 range_request_timeout_in_ms:20000 write_request_timeout_in_ms:20000 cas_contention_timeout_in_m
我正试图在eclipse中运行我的第一个webdriver脚本。使用jre1。8.0_1111. 我使用了下面的代码,但它显示了错误。请帮我查一下密码。 错误堆栈 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性;有关更多信息,请参阅github。com/mozilla/geckodr