<style>.lazy{display:none}</style>Обработка исключений в Selenium WebDriver

Обработка исключений в Selenium WebDriver

Исключение – это ошибка, возникающая во время выполнения программы. Обработка исключений нужна для того, чтобы при возникновении ошибок программа не завершала работу аварийно.

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

В этой статье мы рассмотрим исключения в Selenium и разберем, как их обрабатывать.

Содержание

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Типы исключений в Selenium WebDriver

  1. ElementNotVisibleException возникает, когда элемент есть в DOM, но при этом является невидимым и, следовательно, недоступным для взаимодействия с ним.
  2. ElementNotSelectableException появляется при попытке выбрать элемент, который недоступен для выборки.
  3. NoSuchElementException возникает, если элемент не был найден.
  4. NoSuchFrameException появляется, если целевой фрейм, на который необходимо переключиться, не существует.
  5. NoAlertPresentException возникает при переключении на отсутсвующее оповещение.
  6. NoSuchWindowException генерируется, когда окно, на которое необходимо переключиться, не существует.
  7. StaleElementReferenceException появляется, если веб-элемент отделен от текущего DOM.
  8. SessionNotFoundException. WebDriver работает после выхода из браузера.
  9. TimeoutException выдается, когда для выполнения команды не хватает времени. Например, искомый элемент не был найден за указанное время.
  10. WebDriverException возникает, когда WebDriver срабатывает сразу после закрытия браузера.
  11. ConnectionClosedException возникает при отключении драйвера.
  12. ElementClickInterceptedException. Команда не может быть выполнена, так как элемент, принимающий события, скрывает элемент, по которому был запрошен щелчок.
  13. ElementNotInteractableException выдается, когда какой-либо элемент представлен в DOM, но взаимодействие с ним невозможно.
  14. ErrorInResponseException возникает при взаимодействии с расширением Firefox или удаленным сервером драйверов.
  15. ErrorHandler.UnknownServerException используется в качестве заполнителя на случай, если сервер возвращает ошибку без трассировки стека.
  16. ImeActivationFailedException возникает при неудачной активации движка IME.
  17. ImeNotAvailableException появляется, когда поддержка IME недоступна.
  18. InsecureCertificateException. При навигации пользовательский агент получает предупреждение о сертификате. Это может быть вызвано тем, что TLS-сертификат недействителен или у него истек срок действия.
  19. InvalidArgumentException возникает, когда аргумент не принадлежит к ожидаемому типу.
  20. InvalidCookieDomainException выдается при попытке добавить файл cookie в другом домене вместо текущего URL-адреса.
  21. InvalidCoordinatesException. Данный тип исключения соответствует недопустимой операции взаимодействия.
  22. InvalidElementStateException появляется, когда команда не может быть завершена, если элемент невалиден.
  23. InvalidSessionIdException возникает, когда заданный идентификатор сессии не включен в список активных сессий. Это означает, что сеанс не существует или неактивен.
  24. InvalidSwitchToTargetException выдается, когда целевой фрейм или окно, на которое нужно переключиться, не существует.
  25. JavascriptException возникает при выполнении JavaScript, заданного пользователем.
  26. JsonException происходит при попытке получить сессию, когда она не создана.
  27. NoSuchAttributeException появляется, если атрибут элемента не может быть найден.
  28. MoveTargetOutOfBoundsException выдается, если цель, указанная в методе move() ActionChains, невалидна. Например, за пределами документа.
  29. NoSuchContextException. ContextAware выполняет тестирование мобильных устройств.
  30. NoSuchCookieException возникает, когда среди всех связанных файлов cookie просматриваемого в данный момент документа не обнаружено файлов cookie, соответствующих заданному пути.
  31. NotFoundException. Это исключение является подклассом WebDriverException. Оно возникает, если элемент в DOM не существует.
  32. RemoteDriverServerException выдается, когда сервер не отвечает из-за проблемы, связанной с неправильными описанными возможностями.
  33. ScreenshotException. Невозможно сделать снимок экрана.
  34. SessionNotCreatedException появляется, когда не удалось успешно создать новую сессию.
  35. UnableToSetCookieException возникает, если драйвер не может установить файл cookie.
  36. UnexpectedTagNameException происходит, если класс поддержки не получил ожидаемый веб-элемент.
  37. UnhandledAlertException возникает, когда есть оповещение, но WebDriver не может выполнить операцию Alert.
  38. UnexpectedAlertPresentException появляется при появлении неожиданного оповещения.
  39. UnknownMethodException выдается, когда запрошенная команда соответствует известному URL-адресу, но не соответствует никакому методу для этого URL.
  40. UnreachableBrowserException возникает только в том случае, когда браузер не может быть открыт или происходит сбой по какой-либо причине.
  41. 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)».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *