页面上有表格,我确实需要逐行检索信息。那是由for-each处理的。在同一页面上执行以获取信息的工作正常。
但是,我们可以处理特定Row的Detail页面吗?这里“测试1”有其自己的详细信息页面。详细页面上有一些需要处理的操作。我们如何管理它并恢复到实际执行。
到目前为止,我正在处理for-each循环,并获取StaleElementReferenceException,它是正确的,因为webElement丢失了其实际的ListElement<WebElement>
List<WebElement> findList = driver.findElements(By.xpath("//a[@class='*****']));
for (WebElement webElement : findList) {
...
//detail page is access by clicking webElement
webElement.click();
findList = driver.findElements(By.xpath("//a[@class='*****']));
}
如果有任何办法,请提出建议。谢谢。
答案 0 :(得分:1)
您可以执行以下操作:
List<WebElement> findList = driver.findElements(By.xpath("//a[@class='*****']));
for(int i = 1 ; i<=findList.size() ; i++){
driver.findElement(By.xpath("(//a[@class='***'])[" + i + "]")).click();
// extract some data from next page which is invoked by clicking on Test1 hyperlink.
}
以此方式,每次您寻找//a[@class='***'][i]
网络元素i时(从1一直到终点)。
P.S:无论是否指示 Test1 超链接,您都需要在devtool //a[@class='***'][1]
中进行检查。
希望这会有所帮助。
答案 1 :(得分:0)
尝试收集所有页面的URL,然后打开它们。
答案 2 :(得分:0)
我可以想到两种情况:
点击链接,例如Test1打开一个新标签:
点击链接,例如Test1重定向到同一选项卡中的其他一些URL:
findList = driver.findElements(By.xpath(“ // a [@class ='*****']))
我建议您使用第一个选项,因为这样比较干净,您可以执行换档并单击链接,例如Test1强制其在新选项卡中打开,而不是在同一页面中重定向。您可以使用Selenium中提供的“ Actions api ”执行Shift +单击。