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

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

3 ответов


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

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

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

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

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

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

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

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

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


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

Selenium WebDriver diff. Уэйтс

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


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

  1. По данным этой тайм-аут неявного ожидания по умолчанию -0
  2. По данным этой любая страница, которая не загружается в 60s, возвращает http-связь тайм-аут, Если вы явно не перезаписываете тайм-аут.
  3. к сожалению, я не нашел никаких ссылок предоставить на Очередь scripttimeout. Но по умолчанию это 0 по моим знаниям и опыт. Обновит вас с любой ссылкой позже