我正在尝试从此页面创建WebElement的ArrayList:
如果显示了所有元素,就可以将它们添加到ArrayList中。
ArrayList<WebElement> TodoArray = new ArrayList<WebElement>();
TodoArray.add(todo1);
如果我从网页中删除其中一个元素(非代码),则在运行测试用例时会出现此错误:
org.openqa.selenium.NoSuchElementException: Unable to locate element: *[name='todo[9]']
是否有任何方法可以绕过此错误并强制Java跳过缺少的元素,但继续添加显示的元素?
我的代码非常简单。我正在使用JUnit运行我的测试用例。使用@FindBy批注正确定义了元素。
@FindBy(name="todo[1]")
WebElement todo1;
我尝试使用Try / Catch并使用NoSuchElementException包围变量,但是我不确定如何格式化它。在这种情况下可以使用“继续”关键字吗?
希望我提供了足够的信息。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:2)
对于Java Try / Catch,确切的语法就是这样:
try {
@FindBy(name="todo[1]")
WebElement todo1;
}
catch(NoSuchElementException e) {
System.out.println("could not find element todo1");
}
...
//rest of your code
有帮助吗?
答案 1 :(得分:2)
或者您可以通过这种方式使用流畅的等待:
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(10, SECONDS)
.pollingEvery(1, SECONDS)
.ignoring(NoSuchElementException.class);
我认为这是一种更优雅的方式。