Значение по умолчанию для тайм-аутов на веб-драйвере селена
Меня интересует значение таймаутов по умолчанию для селена 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 очень неясна в отношении этих тайм-аутов.
- В соответствии с этим время ожидания неявного ожидания по умолчанию равно 0
- В соответствии с этим любая страница, которая не загружается в течение 60 с, вернет тайм-аут HTTP-связи, если вы не перезаписали тайм-аут явно.
- К сожалению, я не нашел ссылки на ScriptTimeout. Но это по умолчанию 0 в соответствии с моими знаниями и опытом. Буду обновлять вас с любой ссылкой позже