列出所有国家/地区和语言后,我想导航到下一页。以下是我正在使用的代码。使用此代码,我获得了第一个国家/地区数据,在此之后我得到了Stale异常。
int indexGroupRow = 0;
for (WebElement rowElement:listRows)
{
if (rowElement.getAttribute("class").contains("dxgvGroupRow")
&& rowElement.getAttribute("id").contains("Content_gvCountries_DXGroupRowExp"+indexGroupRow))
{
String t = rowElement.getText();
System.out.println("Country: "+t);
}
if (rowElement.getAttribute("class").contains("dxgvDataRow")
&& rowElement.getAttribute("id").contains("Content_gvCountries_DXDataRow"+indexGroupRow))
{
String t1 = rowElement.getText();
System.out.println("Available Language: " + t1);
List<WebElement> linkElement = rowElement.findElements(By.xpath("td[position()>1]"));
for (WebElement er: linkElement)
{
er.findElement(By.xpath("//*[@id='Content_gvCountries_cell"
+ indexGroupRow
+ "_2_lnkSelectCountry_"
+ indexGroupRow + "']")).click();
}
}
indexGroupRow++;
}
org.openqa.selenium.StaleElementReferenceException:陈旧元素 reference:元素未附加到页面文档(Session info:chrome = 52.0.2743.116)(驱动信息:chromedriver = 2.16.333243 (0bfa1d3575fc1044244f21ddb82bf870944ef961),platform = Windows NT 6.1 SP1 x86_64)(警告:服务器未提供任何堆栈跟踪 信息)命令持续时间或超时:26毫秒 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/stale_element_reference.html建立 info:version:'2.53.1',修订版: 'a36b8b1cd5757287168e54b817830adce9b0158d',时间:'2016-06-30 19:26:09'系统信息:主持人:'WINJITLAPTOP96',ip:'192.168.224.1', os.name:'Windows 7',os.arch:'amd64',os.version:'6.1', java.version:'1.7.0_67'会话ID:adf74ce205fd64d8b3d5c5064781985b 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver功能 [{platform = XP,acceptSslCerts = true,javascriptEnabled = true, browserName =铬, 铬= {userDataDir = C:\ Users \用户deepakv \应用程序数据\本地\ TEMP \ scoped_dir11036_1170}, rotating = false,locationContextEnabled = true, mobileEmulationEnabled = false,version = 52.0.2743.116, takesHeapSnapshot = true,cssSelectorsEnabled = true, databaseEnabled = false,handlesAlerts = true, browserConnectionEnabled = false,webStorageEnabled = true, nativeEvents = true,hasTouchScreen = false, applicationCacheEnabled = false,takeScreenshot = true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678) 在 org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327) 在 org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:179) 在LoginTest.testLogin(LoginTest.java:61)断开连接 目标VM,地址:'127.0.0.1:23563',传输:'socket'
答案 0 :(得分:1)
for (WebElement er: linkElement)
{
er.findElement(By.xpath("//*[@id='Content_gvCountries_cell" + indexGroupRow + "_2_lnkSelectCountry_" + indexGroupRow + "']")).click();
}
第一次单击后会丢失另一个链接,因此驱动程序无法从linkElement列表中单击第二个元素(因为它属于上一页)。 每次点击后,您需要找到下一页的链接