Selenium: полезно ли перехватывать NoSuchElementException для элемента, по которому можно щелкнуть?

Почему мы ловим NoSuchElementException? Имеет смысл поймать исключение, когда мы только проверяем наличие элемента на определенной странице и не выполняем с ним никаких действий. Мы можем перехватить это исключение и зарегистрировать собственное сообщение типа «Элемент не найден».

Когда мы собираемся щелкнуть элемент и если он не найден на странице, селен выбрасывает NoSuchElementException. Какая польза от перехвата этого исключения вместо того, чтобы позволить ему остановить тест и провалить тестовый сценарий?

Примечание. Мои последующие шаги зависят от этого шага щелчка.


person Mehavarnan Murugan    schedule 01.06.2018    source источник


Ответы (2)


Одна из причин поймать исключение - предоставить более релевантные выходные данные об ошибке теста. Например, если элемент div не найден на странице из 20-30 div, потому что селектор не соответствует этому конкретному div, вы можете оставить исключение неперехваченным с помощью общего сообщения об ошибке или вы можете поймать его и выбросить другое исключение с сообщением об ошибке «отсутствует панель навигации».

Если из общего сообщения об ошибке ясно, что не так, или у вас есть сообщение об ошибке теста, которое объясняет это, нет причин для ее обнаружения.

Другая причина для перехвата этого исключения состоит в том, что оно является частью кода пропуска (пропустите этот тест, если / если). Итак, вы ищете элемент и, если он есть, продолжаете тест, если нет - пропускаете.

Могут быть и другие причины, но это две общие.

person Melvyn    schedule 01.06.2018
comment
Если это так, нужно ли окружать каждый оператор findElement блоком try-catch? - person Mehavarnan Murugan; 01.06.2018

Есть два типа исключений:

1. проверенные исключения

2. непроверенные исключения

Отмеченные исключения проверяются только во время компиляции, они должны обрабатываться программистом. Компилятор проверяет во время компиляции, обрабатываются ли эти исключения или нет, если не возникает ошибка времени компиляции. Некоторые из проверенных исключений: IOException, FileNotFoundExpection и т. Д.

Непроверенные исключения: Непроверенные исключения не проверяются компилятором во время компиляции. все исключения, которые расширяются классом RuntimeException, являются непроверенными исключениями. Некоторые из непроверенных исключений: AritmeticException, NullPointerException и т. Д. В селене мы видим непроверенные исключения, такие как NoSuchElementException, StaleElementReferenceException, NoSuchWindowException, TimeoutException и т. Д.

Короче говоря, проверенные исключения должны перехватывать. RuntimeException, также называемое непроверенными исключениями, не следует перехватывать

Более подробную информацию можно найти на

http://toolsqa.com/selenium-webdriver/exception-handling-selenium-webdriver/ http://www.seleniumeasy.com/java-tutorials/exception-handling-in-selenium-webdriver-using-java-examples

person Prany    schedule 01.06.2018
comment
Спасибо за объяснение типов исключений. Не могли бы вы ответить на сценарий, описанный в вопросе? - person Mehavarnan Murugan; 01.06.2018