За годы работы с WebDriver заметил такую штуку, что иногда когда запусешь тесты они “подвисают” на старте, т.е. вызываешь стартовую страницу и она начинает грузиться в браузере. Ты видишь как она появилась, но тест дальше не идёт, висит и ждёт пока подгрузится какой-то скрипт или плагин. Обычно это какой-то фэйсбук или реклама или ещё чтото, что на тесты никак не влияет. Если в этот момент кликнуть в браузере на крест, то тест сразу поидёт дальше.
Вопрос: можно ли в таких случиях как-то форсировать тест дальше?
Та-же самая беда, иногда летит, а иногда тупит, связано с JS которые подтягивает инфу из соцсетей ВК, Мордокнига и т.д… Пока не решил, но задумка есть, все руки не дойдут реализовать.
Вот пользователи то как раз с этим проблем и не испытывают, даже не особо обращают внимания что страница не догрузилась (90% пользователей, хе сами же такие)
На всякий случай спрошу: а при тестировании руками такое тоже наблюдается? Что в этот момент показывает Network tab?
Я спрашиваю к тому, что порой дело не в самом сайте, а в железе и специфичных опциях браузера.
К примеру, недавно открыл для себя пагубное влияние следующего Chrome флага на процесс прогрузки первой страницы - Use hardware accelaration when available. Причем, он включен по дефолту. А у меня есть 2 VMки с расшаренными ресурсами. В итоге, 1 из них выдавала эффект зависания, подобный описанному выше. Решалось запуском тестов с опцией отключающей упомянутый флаг.
Зависания наблюдаются на тест машине, стоит:
Linux MINT 17.2
Selenium
Chrome, FF
Зависания наблюдаются в обоих браузерах, а вот на рабочей машине в мастдае таких подвисов не наблюдал, может связано с тем что мастдай для тестов не используется или не обращал внимания. А хард акселирацию сейчас отключу и проверю.
Как и было замечено - это поведение, которое видит конечный пользователь. Не нужно костылей, просто нужно ждать и все. Иначе это уже неполноценная проверка. А если ваш сервис крашится после загрузки рекламы? Вдруг?
На мануале иногда тоже долго загружается, я думаю что тут дедло в самом сервисе который в некоторые моменты тупит и не даёт странице полностью загрузиться. Реальный пользователь этого просто не замечает потамучто визуально всё работает и показывается как надо. Но для Драйвера этого не достаточно
driver.manage().timeouts().pageLoadTimeout()
А вот это уже спорно - так как распространяется на весь контент.
pageLoadStrategy
Ранее было уделом “избранных” браузеров. Вижу что Джим прикрутил это к ИЕ только в августе апреле сего года. И насколько эта фича стабильна - наверняка мало кому известно (например iedriverserver до сих пор шарашит css локаторы через Sizzle). А как дела у остальных?