重新加载页面,但保留DOM保存

时间:2018-02-02 19:49:50

标签: java selenium-webdriver

有人可以帮我处理以下情况。 有一个页面上有exiss点击按钮,里面有7个选项。 找到这七个选项并将其保存在列表中

  

WebElement列表

想要使用 for loop 来拾取每个元素,并检查每个按钮是否都被cliked。

现在变得棘手: 该dropdwon不是选择一种类型,并在点击名为报告

的按钮后显示

enter image description here

因此,总而言之,我首先点击打开下拉列表(在报告按钮上),  然后选择一个选项

enter image description here

在页面上显示的消息之后是:

report sent succesfully or error 

enter image description here

但是,用于激活下拉消息的按钮(在点击发送报告后)并且在重新加载页面之前不会再次出现。

为了选择下一个选项我必须重新加载页面,但随后我松开了保存的选项,迭代是无用的。 尝试使用

重新加载页面
driver.navigate().refresh();

结果,我有一个循环传递,然后是错误:

stale element exception element still exists no DOM attached, the reference is lost

所以,我的问题是:Java和其他方式是否存在? Selenium保持DOM并同时重新加载相同的页面? 提前谢谢

1 个答案:

答案 0 :(得分:1)

您只需要在循环中重新获取选项集合并通过索引访问它。

By buttonLocator = By.id(""); // the button that when clicked exposes the dropdown
By optionsLocator = By.id(""); // the options in the dropdown
driver.findElement(buttonLocator).click();
List<WebElement> options = driver.findElements(optionsLocator);
for (int i = 0; i < options.size(); i++)
{
    driver.findElements(By.id("")).get(i).click(); // click the option
    // code that detects success or error
    driver.navigate().refresh();
}