有人可以帮我处理以下情况。 有一个页面上有exiss点击按钮,里面有7个选项。 找到这七个选项并将其保存在列表中
WebElement列表
想要使用 for loop 来拾取每个元素,并检查每个按钮是否都被cliked。
现在变得棘手: 该dropdwon不是选择一种类型,并在点击名为报告
的按钮后显示因此,总而言之,我首先点击打开下拉列表(在报告按钮上), 然后选择一个选项
在页面上显示的消息之后是:
report sent succesfully or error
但是,用于激活下拉消息的按钮(在点击发送报告后)并且在重新加载页面之前不会再次出现。
为了选择下一个选项我必须重新加载页面,但随后我松开了保存的选项,迭代是无用的。 尝试使用
重新加载页面driver.navigate().refresh();
结果,我有一个循环传递,然后是错误:
stale element exception element still exists no DOM attached, the reference is lost
所以,我的问题是:Java和其他方式是否存在? Selenium保持DOM并同时重新加载相同的页面? 提前谢谢
答案 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();
}