Исключение — это ошибка, возникающая во время выполнения программы. Обработка исключений нужна для того, чтобы при возникновении ошибок программа не завершала работу аварийно.
Исключение указывает на то, что, хотя данное событие и может произойти, в действительно оно случается нечасто. Когда метод не может обработать исключение, оно передается вызывающей функции.
В этой статье мы рассмотрим исключения в 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)».
