Исключение – это ошибка, возникающая во время выполнения программы. Обработка исключений нужна для того, чтобы при возникновении ошибок программа не завершала работу аварийно.
Исключение указывает на то, что, хотя данное событие и может произойти, в действительно оно случается нечасто. Когда метод не может обработать исключение, оно передается вызывающей функции.
В этой статье мы рассмотрим исключения в Selenium и разберем, как их обрабатывать.
Содержание
- Типы исключений в Selenium WebDriver
- Как обрабатывать исключения в Selenium
- Методы отображения исключений
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Типы исключений в Selenium WebDriver
- ElementNotVisibleException возникает, когда элемент есть в DOM, но при этом является невидимым и, следовательно, недоступным для взаимодействия с ним.
- ElementNotSelectableException появляется при попытке выбрать элемент, который недоступен для выборки.
- NoSuchElementException возникает, если элемент не был найден.
- NoSuchFrameException появляется, если целевой фрейм, на который необходимо переключиться, не существует.
- NoAlertPresentException возникает при переключении на отсутсвующее оповещение.
- NoSuchWindowException генерируется, когда окно, на которое необходимо переключиться, не существует.
- StaleElementReferenceException появляется, если веб-элемент отделен от текущего DOM.
- SessionNotFoundException. WebDriver работает после выхода из браузера.
- TimeoutException выдается, когда для выполнения команды не хватает времени. Например, искомый элемент не был найден за указанное время.
- WebDriverException возникает, когда WebDriver срабатывает сразу после закрытия браузера.
- ConnectionClosedException возникает при отключении драйвера.
- ElementClickInterceptedException. Команда не может быть выполнена, так как элемент, принимающий события, скрывает элемент, по которому был запрошен щелчок.
- ElementNotInteractableException выдается, когда какой-либо элемент представлен в DOM, но взаимодействие с ним невозможно.
- ErrorInResponseException возникает при взаимодействии с расширением Firefox или удаленным сервером драйверов.
- ErrorHandler.UnknownServerException используется в качестве заполнителя на случай, если сервер возвращает ошибку без трассировки стека.
- ImeActivationFailedException возникает при неудачной активации движка IME.
- ImeNotAvailableException появляется, когда поддержка IME недоступна.
- InsecureCertificateException. При навигации пользовательский агент получает предупреждение о сертификате. Это может быть вызвано тем, что TLS-сертификат недействителен или у него истек срок действия.
- InvalidArgumentException возникает, когда аргумент не принадлежит к ожидаемому типу.
- InvalidCookieDomainException выдается при попытке добавить файл cookie в другом домене вместо текущего URL-адреса.
- InvalidCoordinatesException. Данный тип исключения соответствует недопустимой операции взаимодействия.
- InvalidElementStateException появляется, когда команда не может быть завершена, если элемент невалиден.
- InvalidSessionIdException возникает, когда заданный идентификатор сессии не включен в список активных сессий. Это означает, что сеанс не существует или неактивен.
- InvalidSwitchToTargetException выдается, когда целевой фрейм или окно, на которое нужно переключиться, не существует.
- JavascriptException возникает при выполнении JavaScript, заданного пользователем.
- JsonException происходит при попытке получить сессию, когда она не создана.
- NoSuchAttributeException появляется, если атрибут элемента не может быть найден.
- MoveTargetOutOfBoundsException выдается, если цель, указанная в методе
move()
ActionChains, невалидна. Например, за пределами документа. - NoSuchContextException. ContextAware выполняет тестирование мобильных устройств.
- NoSuchCookieException возникает, когда среди всех связанных файлов cookie просматриваемого в данный момент документа не обнаружено файлов cookie, соответствующих заданному пути.
- NotFoundException. Это исключение является подклассом WebDriverException. Оно возникает, если элемент в DOM не существует.
- RemoteDriverServerException выдается, когда сервер не отвечает из-за проблемы, связанной с неправильными описанными возможностями.
- ScreenshotException. Невозможно сделать снимок экрана.
- SessionNotCreatedException появляется, когда не удалось успешно создать новую сессию.
- UnableToSetCookieException возникает, если драйвер не может установить файл cookie.
- UnexpectedTagNameException происходит, если класс поддержки не получил ожидаемый веб-элемент.
- UnhandledAlertException возникает, когда есть оповещение, но WebDriver не может выполнить операцию Alert.
- UnexpectedAlertPresentException появляется при появлении неожиданного оповещения.
- UnknownMethodException выдается, когда запрошенная команда соответствует известному URL-адресу, но не соответствует никакому методу для этого URL.
- UnreachableBrowserException возникает только в том случае, когда браузер не может быть открыт или происходит сбой по какой-либо причине.
- UnsupportedCommandException происходит, когда удаленный WebDriver не отправляет допустимые команды должным образом.
Как обрабатывать исключения в Selenium
А теперь давайте рассмотрим, как происходит обработка исключений в Selenium WebDriver.
Шаг 1. Try-catch
Для перехвата исключений используется комбинация ключевых слов try
и catch
. Команда try
указывает на начало блока, а сatch
помещается в конце блока try
, что позволяет разрешить исключение.
try { // Code } catch (Exception e) { // Code for Handling exception }
Шаг 2. Множественные блоки сatch
Существуют различные типы исключений, и в одном блоке кода можно ожидать более одного исключения. Множественные перехваты помогают обрабатывать каждый тип исключений отдельно, в отдельном блоке кода. Можно использовать более двух блоков перехвата, причем количество таких блоков не ограничено.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Шаг 3. Throw
Если вы хотите сгенерировать исключение, ключевое слово throw
используется для выброса исключения и его обработки во время выполнения. Когда вы генерируете исключение, не обрабатывая его, необходимо использовать ключевое слово throw
.
public static void anyFunction() throws Exception{ try { // write your code here } Catch (Exception b) { // Do whatever you want to perform // Throw the Exception back to the system throw(b); } }
Шаг 4. Множественные исключения
Ключевое слово throws
позволяет перечислять различные исключения.
public static void anyFunction() throws ExceptionType1, ExceptionType2{ try { // write your code here } catch (ExceptionType1 e1) { // Code to handle exception 1 } catch (ExceptionType1 e2) { // Code to handle exception 2 }
Шаг 5. Finally
Ключевое слово finally
используется для создания блока кода под блоком try
. Именно этот код помогает выполнить задачу независимо от возникновения исключения.
try { //Code } catch (ExceptionType1 e1) { //Catch block } catch (ExceptionType2 e2) { //Catch block } catch (ExceptionType3 e3) { //Catch block } finally { //The finally block always executes. }
Методы отображения исключений
Для отображения информации об исключениях можно также использовать следующие методы:
printStackTrace()
. Эта функция печатает трассировку стека, имя исключения и его описание.toString()
. Эта функция возвращает текстовое сообщение с именем и описанием исключения.getMessage()
. Позволяет вывести на экран описание исключения.
Выводы
- Исключение – это ошибка, возникающая во время выполнения программы.
- Try-catch позволяет перехватывать исключения, для чего используется комбинация ключевых слов
try
иcatch
. - Множественные перехваты помогают обрабатывать каждый тип исключений отдельно, отдельным блоком кода.
- Ключевое слово
Throw
используется для создания исключения и его обработки во время выполнения. - Функция
printStackTrace()
печатает трассировку стека, имя исключения и его описание. toString()
возвращает текстовое сообщение с именем и описанием исключения.getMessage()
позволяет вывести на экран описание исключения.
Перевод статьи «Exception Handling in Selenium Webdriver (Types)».