Подтвердить что ты не робот

Значение по умолчанию для тайм-аутов в selenium webdriver

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

4b9b3361

Ответ 1

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

Спецификация WebDriver, которая была получена из Selenium, основана на следующих значениях:

  • Для неявных ожиданий: 0 секунд. Это означает, что если команда selenium не находит элемент немедленно, она сообщает немедленно, а не ждет, пока элемент будет найден.

  • Для загрузки страницы: 300 секунд.

  • Для времени ожидания сценария: 30 секунд.

(Спецификация дает значения в миллисекундах. Я преобразовал их в секунды для удобства чтения.)

Selenium теперь следует спецификации WebDriver.


Однако в прошлом Selenium использовал другие значения для них. Например, драйвер Firefox использовал его время ожидания следующим образом:

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

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

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

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

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

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

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

Ответ 2

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

Selenium Webdriver diff. ждет

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

Ответ 3

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

  • Согласно this таймаут по умолчанию для неявного ожидания - 0
  • Согласно this любая страница, которая не загружается в 60-х, вернет http-связь timeout, если вы явно не перезаписали тайм-аут.
  • К сожалению, я не нашел ссылки на ScriptTimeout. Но по умолчанию это значение 0 и опыт. Обновит вас с любыми ссылками позже.