Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8和selenium_Java_Selenium_Selenium Webdriver_Java 8 - Fatal编程技术网

Java8和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

我有个问题要问你们。我正在尝试将streams和自动化与Selenium结合使用。 我得到了
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