Значение по умолчанию для тайм-аутов на веб-драйвере селена

Меня интересует значение таймаутов по умолчанию для селена webdriver. ImplicitlyWait, SetPageLoadTimeout а также SetScriptTimeout, Потому что я хочу знать, нужно ли устанавливать значения для этих тайм-аутов? или значение по умолчанию подходит для работы селенового вебдрайвера. Но я не могу найти правильный ответ, кто-то говорит, что значение по умолчанию равно 0, а кто-то говорит, что это 30 секунд.

3 ответа

Решение

Эти три тайм-аута управляются серверной частью уравнения Selenium. Ваш скрипт, будь то Java, Python, Ruby, C# или любой другой, является клиентом, который отправляет команды на сервер, который живет в браузере. (Там может быть посредник, который передает команды в браузер, например, Selenium Grid. К сожалению, его также иногда называют "сервером".)

Сервер Firefox определяет свое время ожидания следующим образом:

  • Неявное время ожидания по умолчанию установлено в 0. Это означает, что если команда, которая находит элементы, ничего не находит, она не будет ждать.

  • Тайм-аут загрузки страницы по умолчанию равен -1. Это означает, что Selenium будет бесконечно долго ждать загрузки страницы.

    То, что обнаружил Сайфур, отличается от времени ожидания загрузки страницы. Это тайм-аут между клиентом Selenium и сервером Selenium, что не очень хорошо объясняется на странице, найденной Сайфуром.

  • Время ожидания скрипта по умолчанию установлено на 0. Комментарий в исходном коде объясняет:

    Время в миллисекундах, в течение которого сеанс должен ожидать завершения выполнения асинхронных сценариев. Если установлено значение 0, тайм-аут не будет срабатывать до следующего цикла событий после выполнения сценария. Это даст сценарии, которые используют setTimeout на основе 0 для завершения.

    Таким образом, даже если он установлен на ноль, асинхронный скрипт все еще может выполняться, но он должен завершиться до того, как тайм-аут Selenium получит шанс на повторный запуск.

Это из кода, который Selenium использует для Firefox. Другие браузеры используют разные кодовые базы, но они должны вести себя согласованно, по крайней мере, в отношении вещей, которые относятся к самой Selenium, например, таких как тайм-ауты. Таким образом, значения и их интерпретации должны быть одинаковыми для других браузеров.

Для неявного ожидания всегда по умолчанию wait это ZERO. Вы можете проверить это здесь:

Selenium Webdriver diff. ждет

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

Документация Selenium очень неясна в отношении этих тайм-аутов.

  1. В соответствии с этим время ожидания неявного ожидания по умолчанию равно 0
  2. В соответствии с этим любая страница, которая не загружается в течение 60 с, вернет тайм-аут HTTP-связи, если вы не перезаписали тайм-аут явно.
  3. К сожалению, я не нашел ссылки на ScriptTimeout. Но это по умолчанию 0 в соответствии с моими знаниями и опытом. Буду обновлять вас с любой ссылкой позже
Другие вопросы по тегам