1

我正在尝试从此页面创建 WebElements 的 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,但我不确定如何格式化它。在这种情况下可以使用“继续”关键字吗?

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

4

2 回答 2

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

这有帮助吗?

于 2019-03-22T04:35:20.760 回答
2

或者你可以使用流利的等待,这样:

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
    .withTimeout(10, SECONDS)
    .pollingEvery(1, SECONDS)
    .ignoring(NoSuchElementException.class);

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

于 2019-03-22T06:56:48.630 回答