В этом посте мы рассмотрим различные типы ожидания в Selenium 4, включая новые улучшения и лучшие практики их использования.
Типы ожидания в Selenium 4
Selenium 4 предоставляет три основных типа ожидания:
Давайте углубимся в каждый из них!
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
В этом примере Selenium будет ждать появления элемента до 10 секунд, прежде чем выдать исключение NoSuchElementException. Ожидание применяется к каждому поиску элемента в течение всего сеанса.
Плюсы:
Простота реализации.
Подходит для простых проектов.
Минусы:
Может замедлить выполнение теста, поскольку ожидание применяется глобально, даже если в этом нет необходимости.
Может привести к непредсказуемому поведению теста при использовании с другими типами ожидания.
Пример кода:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(15)); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("example")));
В этом примере WebDriver будет ждать до 15 секунд, пока элемент не станет видимым. Если элемент появляется до истечения 15 секунд, ожидание заканчивается раньше.
Общие явные условия ожидания:
visibilityOfElementLocated()
элементToBeClickable()
присутствиеOfElementLocated()
оповещениеIsPresent()
Плюсы:
Широкие возможности настройки и более эффективный, чем неявное ожидание.
Ожидает только тогда, когда необходимы определенные условия.
Минусы:
Требуется больше кода, что может повысить сложность.
Управление несколькими явными ожиданиями может оказаться затруднительным в больших проектах.
WaitfluentWait = new FluentWait(driver) .withTimeout(Duration.ofSeconds(20)) .pollingEvery(Duration.ofMillis(500)) .ignoring(NoSuchElementException.class); WebElement element = fluentWait.until(driver -> driver.findElement(By.id("example")));
Здесь WebDriver будет проверять элемент каждые 500 миллисекунд и ждать до 20 секунд, прежде чем истечет время ожидания. В это время он также будет игнорировать NoSuchElementException.
Плюсы:
Обеспечивает большую гибкость и контроль над обработкой ожидания.
Позволяет настраивать интервалы опроса и обработку исключений.
Минусы:
Может быть сложнее настроить и понять.
Чрезмерная настройка может привести к запутанному и сложному в сопровождении коду.
Улучшения в ожиданиях Selenium 4
В Selenium 4 представлены некоторые улучшения, особенно в управлении ожиданием:
Улучшенный синтаксис: Selenium 4 использует Duration вместо предыдущего TimeUnit, что делает его более интуитивным и читабельным.
Относительные локаторы: теперь вы можете ожидать элементы относительно других элементов (например, слева, рядом и т. д.).
Улучшенный WebDriverWait: класс WebDriverWait в Selenium 4 более оптимизирован и прост в использовании благодаря современному синтаксису.
Лучшие практики использования ожиданий в Selenium 4
Используйте явное ожидание вместо неявного. Для лучшего контроля и производительности отдавайте предпочтение явному ожиданию, особенно в сложных сценариях.
Избегайте смешивания неявного и явного ожидания: использование обоих может привести к непредсказуемому поведению и увеличению времени ожидания.
Установите разумные значения времени ожидания: избегайте установки неоправданно длительного ожидания. Проанализируйте поведение вашего приложения, чтобы определить подходящее время ожидания.
Используйте плавное ожидание для динамических элементов. Если элементы очень динамичны, рассмотрите возможность использования плавного ожидания с интервалами опроса, чтобы уменьшить ненужное ожидание.
Заключение
Эффективная обработка ожиданий в Selenium 4 имеет решающее значение для написания стабильных и надежных автоматических тестов. Понимание того, когда и как использовать неявное, явное и плавное ожидание, может значительно повысить надежность вашего набора тестов. Благодаря улучшениям в Selenium 4 у вас есть еще более мощные инструменты для решения проблем синхронизации.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3