Java8和selenium
我有个问题要问你们。我正在尝试将streams和自动化与Selenium结合使用。 我得到了Java8和selenium,java,selenium,selenium-webdriver,java-8,Java,Selenium,Selenium Webdriver,Java 8,我有个问题要问你们。我正在尝试将streams和自动化与Selenium结合使用。 我得到了List getall按钮//在这个列表中,我得到了大约5个按钮 getAllEditButtons().stream() .limit(2).forEach(webElement -> { webElement.click(); PageUtil.clearInputAndSendKeys(userPassword, password); Pag
List getall按钮代码>//在这个列表中,我得到了大约5个按钮
getAllEditButtons().stream()
.limit(2).forEach(webElement -> {
webElement.click();
PageUtil.clearInputAndSendKeys(userPassword, password);
PageUtil.clearInputAndSendKeys(userReEnterPassword, password);
saveClient.click();
});
在forEach中进行第一次迭代后,我得到:
“org.openqa.selenium.StaleElementReferenceException:过时元素引用:元素未附加到页面文档”
你知道如何解决这个问题而不是用简单的代码重写吗?看起来你的编辑按钮是在循环中第一次单击后重新创建的
因此,getAllEditButtons()
返回的web元素在第二次迭代中将不再存在
要解决此问题,您必须再次找到web元素:
IntStream.range(0, getAllEditButtons().size())
.limit(2)
.forEach(i ->
getAllEditButtons()[i].click();
...
);
我不懂lamda表达式,我本可以帮你的你需要在每次迭代中重新识别列表元素,由于某些操作使该元素重新加载,因此您可以从流中获取元素定位器详细信息,如xpath,并将您的webelement构造为Avoid stale