Какие exceptions может бросить Selenium? Что они означают и как их обрабатывать?

  1. NoSuchElementException:

    • Бросается, когда метод findElement не может найти элемент на странице с использованием указанного селектора (например, By.id("exampleId")).

    try {
        WebElement element = driver.findElement(By.id("exampleId"));
    } catch (NoSuchElementException e) {
        // Обработка случая, когда элемент не найден
        System.out.println("Элемент не найден.");
    }
  2. TimeoutException:

    • Выбрасывается, когда время ожидания истекло. Например, при использовании WebDriverWait и метода until для ожидания определенного условия.

    try {
        WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("exampleId")));
    } catch (TimeoutException e) {
        // Обработка случая, когда элемент не появился в течение указанного времени
        System.out.println("Элемент не появился в течение 10 секунд.");
    }
  3. StaleElementReferenceException:

    • Возникает, когда ссылка на элемент устарела, например, после перезагрузки страницы или изменения DOM.

    try {
        WebElement element = driver.findElement(By.id("exampleId"));
        // Сделать что-то с элементом
        element.click();
    } catch (StaleElementReferenceException e) {
        // Обработка случая, когда ссылка на элемент устарела
        System.out.println("Ссылка на элемент устарела.");
    }
  4. ElementNotInteractableException:

    • Возникает, когда попытка взаимодействовать с элементом не удается, например, при попытке ввода текста в неактивное поле ввода.

    try {
        WebElement inputField = driver.findElement(By.id("exampleInput"));
        inputField.sendKeys("Hello, Selenium!");
    } catch (ElementNotInteractableException e) {
        // Обработка случая, когда элемент не может быть взаимодействован
        System.out.println("Невозможно взаимодействовать с элементом.");
    }
  5. WebDriverException:

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

    try {
        // Код, который может вызвать WebDriverException
    } catch (WebDriverException e) {
        // Обработка WebDriverException
        System.out.println("Возникла ошибка WebDriver.");
    }

Last updated