Selenium(Java)中的“ NoSuchElementException”之后如何继续执行?

时间:2019-03-22 04:01:16

标签: java maven selenium junit page-factory

我正在尝试从此页面创建WebElement的ArrayList:

enter image description here

如果显示了所有元素,就可以将它们添加到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包围变量,但是我不确定如何格式化它。在这种情况下可以使用“继续”关键字吗?

希望我提供了足够的信息。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 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);

我认为这是一种更优雅的方式。