Обработка исключений в Selenium Веб-драйвер (типы)
⚡ Умное резюме
Обработка исключений в Selenium WebDriver предотвращает остановку команды, которая завершилась с ошибкой.ping полный тестовый запуск. Java Конструкция try-catch, множественные блоки catch, throw, throws и, наконец, каждая из них предоставляет скрипту свой способ восстановления.
Что такое исключение?
Исключение — это ошибка, возникающая во время выполнения программы. В процессе работы программы язык программирования генерирует исключение, которое необходимо обработать, иначе программа завершится с ошибкой.
Исключение указывает на то, что, хотя событие может произойти, оно случается нечасто. Если метод не может обработать исключение, оно передается вызывающей функции. Javaчто является движущей силой большинства Selenium В пакетах WebDriver все исключения не проверяются, поэтому компилятор никогда не заставляет вас их перехватывать — необработанная ошибка проявляется только во время выполнения.
Типы исключений в Selenium Вебдрайвер
Класс WebDriverException является базовым классом иерархии, и каждое исключение ниже наследуется от него. В таблице перечислены все 41 исключение, с которыми вы можете столкнуться, а также условие, которое вызывает каждое из них.
| # | Исключение | Когда это происходит |
|---|---|---|
| 1 | Элементнотвидиблисключение | Существующий элемент в DOM имеет параметр "скрытый". |
| 2 | ElementNotSelectableException | Элемент находится в DOM, но его нельзя выбрать, поэтому взаимодействие с ним невозможно. |
| 3 | NoSuchElementException | Элемент не удалось найти с помощью локатор в комплект поставки. |
| 4 | NoSuchFrameException | рама Целевой объект, на который следует переключиться, не существует. |
| 5 | Ноалертпрезентексцептион | Переход к бдительный Запускается, когда не отображается предупреждение. |
| 6 | Носачвиндовексцептион | Окно, на которое необходимо переключиться, не существует. |
| 7 | StaleElementReferenceException | Веб-элемент отсоединен от текущего DOM. |
| 8 | SessionNotFoundException | WebDriver начинает работу после закрытия браузера. |
| 9 | Исключение тайм-аута | Команда не была выполнена вовремя — например, искомый элемент не был найден в течение периода ожидания. |
| 10 | WebDriverException | Базовый класс для других исключений WebDriver; также возникает, когда WebDriver выполняет действия сразу после закрытия браузера. |
| 11 | ConnectionClosedException | Произошло отключение в драйвере. |
| 12 | ElementClickInterceptedException | Элемент, получающий события, скрывает элемент, запрошенный для клика. |
| 13 | Элементнотинтерактаблеисключение | Элемент присутствует в DOM, но взаимодействовать с ним невозможно. |
| 14 | ErrorInResponseException | Произошла ошибка при взаимодействии с Firefox расширение или удаленный сервер драйверов. |
| 15 | ErrorHandler.UnknownServerException | Используется в качестве заполнителя, когда сервер возвращает ошибку без стека вызовов. trace. |
| 16 | ImeActivationFailedException | Активация движка IME не удалась. |
| 17 | ImeNotAvailableException | Поддержка IME недоступна. |
| 18 | InsecureCertificateException | Навигация привела к тому, что пользовательский агент нажал на предупреждение сертификатак чему может привести недействительный или просроченный TLS-сертификат. |
| 19 | Инвалидаргументексцептион | Аргумент не соответствует ожидаемому типу. |
| 20 | InvalidCookieDomainException | A печенье добавлен в другой домен вместо текущего URL. |
| 21 | InvalidCoordinatesException | Соответствующая операция взаимодействия недействительна. |
| 22 | InvalidElementStateException | Команда не может быть завершена, поскольку элемент недопустим. |
| 23 | InvalidSessionIdException | Указанный идентификатор сессии отсутствует среди активных сессий, следовательно, она не существует или неактивна. |
| 24 | InvalidSwitchToTargetИсключение | Целевой фрейм или окно, на которое необходимо переключиться, не существует. |
| 25 | JavascriptИсключение | При выполнении произошла ошибка. JavaСкрипт, предоставленный пользователем. |
| 26 | JsonException | Запрос на создание сессии отправляется, если сессия ещё не создана. |
| 27 | NoSuchAttributeException | Атрибут элемента не найден. |
| 28 | ДвигаемсяTargetOutOfBoundsException | Цель, переданная методу 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 не может выполнить операцию обработки предупреждения. |
| 38 | UnexpectedAlertPresentException | Появляется неожиданное предупреждение. |
| 39 | UnknownMethodException | Запрошенная команда соответствует известной URL но это не тот метод, который подходит именно для этой цели. URL. |
| 40 | UnreachableBrowserException | Браузер не открывается или по какой-то причине завис. |
| 41 | UnsupportedCommandException | Удаленный WebDriver не отправляет корректные команды, как ожидалось. |
Три фактора доминируют в ежедневной отладке: NoSuchElementException означает ошибку. XPath Если элемент не был отображен, TimeoutException означает слишком короткое время ожидания. AJAX в ответе, и за ним следует исключение StaleElementReferenceException. динамический перерисовать.
Как обрабатывать исключения в Selenium
Вот стандартные конструкции для обработки исключений в Selenium WebDriver. Каждый из них прост. Java, поэтому это работает в любом случае. Скрипт WebDriver без дополнительных библиотек.
Шаг 1) Попробуйте-поймайте
Этот метод позволяет перехватывать исключения, используя комбинацию ключевых слов try и catch. Команда try отмечает начало блока, а catch размещается в конце блока try, где она обрабатывает исключение.
try { // Code } catch (Exception e) { // Code for Handling exception }
Шаг 2) Несколько блоков catch
Существуют различные типы исключений, и один блок кода может вызвать более одного исключения. Использование нескольких блоков catch позволяет обрабатывать каждый тип отдельно с помощью собственного кода. Вы можете использовать более двух блоков catch, и нет ограничений на их количество.
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
Шаг 3) Бросок
Когда вам нужно сгенерировать исключение, ключевое слово 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) Несколько исключений
В пункте, касающемся исключений, можно упомянуть различные исключения.
public static void anyFunction() throws ExceptionType1, ExceptionType2{ try { // write your code here } catch (ExceptionType1 e1) { // Code to handle exception 1 } catch (ExceptionType2 e2) { // Code to handle exception 2 }
Шаг 5) Наконец
Ключевое слово 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. }
Методы отображения информации об исключениях
После перехвата исключения сам объект содержит подробную диагностическую информацию. Для её отображения можно использовать следующие методы:
| Способ доставки | Что в нем сообщается |
|---|---|
| printStackTracе () | Выводит содержимое стека tracт. е. название исключения и другое полезное описание. |
| нанизывать() | Возвращает текстовое сообщение с указанием названия и описания исключения. |
| GetMessage () | Отображает описание исключения отдельно. |
Если сопоставить эти данные со скриншотом, сделанным внутри блока catch, то неудачный запуск покажет как причину сбоя, так и внешний вид страницы.
