Есть ли смысл обрабатывать исключения в селене, кроме как для целей регистрации? - PullRequest
0 голосов
/ 18 апреля 2019

Мне трудно понять смысл обработки исключений в селене. Например, если я пытаюсь щелкнуть по элементу, и элемент не может быть найден, то возникает NoSuchElementException. Я могу поймать исключение, выбросить новый RunTimeException или ничего не делать. Результат будет таким же (программа не выполнится и остановится).

Зачем мне обрабатывать такое исключение?

Я что-то здесь упускаю?

спасибо

    public void clickOnElement(MobileElement element, Integer waitInSeconds){
    waitInSeconds = (waitInSeconds != null ? waitInSeconds : this.secondsToWait);
    try {
        waitFor(ExpectedConditions.elementToBeClickable(element),waitInSeconds);
        element.click();
    } catch (Exception e) {
        System.out.println("Could not click on element");
        e.printStackTrace();
    }
}

Ответы [ 3 ]

1 голос
/ 18 апреля 2019

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

try{
    driver.findElement(By.id("MyId")).click();
} catch (StaleElementReferenceException e){
    driver.findElement(By.id("MyId")).click();
}

Или, например, вы можете игнорировать, если элемент не появляется, например, наложение GDPR вверху страницы после входа в систему.

try {
    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("gdpr_overlay")));
} catch (TimeoutException ignored){

}

Это будет игнорировать исключение, выданное ожиданием, если оверлей не появится, и продолжит выполнение теста.

0 голосов
/ 18 апреля 2019

Во-первых, ExceptionHandling не является концепцией Selenium, но она связана с JAVA. Теперь, что касается использования обработки исключений, у этого есть много глубины к концепции, которую вы поймете при построении фреймворков, но на данный момент важно понять, обрабатывая исключения, вы можете продолжать выполнять свой код без JVM, завершая остальное, когда оно встречает исключение.

try{
}
catch{
}
finally
{
}

Наконец, это также очень полезно, когда вы всегда хотите выполнить блок кода, независимо от того, пройдет ли ваш сценарий или нет, например, как driver.close (). Надеюсь, это помогло ... Удачного кодирования

0 голосов
/ 18 апреля 2019

Исключения - это очень полезные функции, гораздо более полезные, чем просто для регистрации, вы должны найти их.Вы можете делать все что угодно в блоке catch, вы можете попробовать щелкнуть по другому элементу, если первый не удался, перенаправить на другую страницу ... Возможности на самом деле бесконечны.Совет: избегайте общих исключений, вы должны ловить определенные исключения и реагировать соответствующим образом, а в последнем блоке catch вы можете сделать общее исключение e и выдать ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...