Как продолжить выполнение после «NoSuchElementException» в Selenium (Java)? - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь создать ArrayList из WebElements с этой страницы:

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, но я не был уверен, как его отформатировать.Возможно ли использование ключевого слова continue в этой ситуации?

Надеюсь, я предоставил достаточно информации.Любая помощь будет оценена.Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Или вы можете использовать свободное ожидание, вот так:

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

Я думаю, что это более элегантный способ сделать это.

2 голосов
/ 22 марта 2019

Точный синтаксис для 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

Помогает ли это?

...