Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Тест сценарий висит и ждёт пока очень долго подгружаютя некоторые скрипты

webdriver
Теги: #<Tag:0x00007f7b6900c210>

(Konstantin) #1

За годы работы с WebDriver заметил такую штуку, что иногда когда запусешь тесты они “подвисают” на старте, т.е. вызываешь стартовую страницу и она начинает грузиться в браузере. Ты видишь как она появилась, но тест дальше не идёт, висит и ждёт пока подгрузится какой-то скрипт или плагин. Обычно это какой-то фэйсбук или реклама или ещё чтото, что на тесты никак не влияет. Если в этот момент кликнуть в браузере на крест, то тест сразу поидёт дальше.

Вопрос: можно ли в таких случиях как-то форсировать тест дальше?


(vmaximv) #2

Блокируйте “паразитный” трафик через прокси или %windir%\system32\drivers\etc\hosts


(Stan) #3

Все пользователи ведь тоже будут его блокировать, да? :slight_smile:
И мы будем тестировать совершенно другой сайт, поведение которого будет отличаться от реального.


(vmaximv) #4

Не сходится - не так ли?


(Stan) #5

Я не понимаю, как оно не влияет на тесты, если тесты падают?


(vmaximv) #6

А с чего вы решили, что они “падают”?


(Konstantin) #7

тест не падает, он просто стоит минуту или более пока какойто плагин не завершит полную загрузку страницы


(Ray Romanov) #8

Та-же самая беда, иногда летит, а иногда тупит, связано с JS которые подтягивает инфу из соцсетей ВК, Мордокнига и т.д… Пока не решил, но задумка есть, все руки не дойдут реализовать.


(Stan) #9

Ну так у пользователей то он тоже не завершает в таком случае?) Т.е. пользователи аналогично испытывают проблему?


(vmaximv) #10

Пользователю несколько безразлично, если пару баннеров решили “подумать”, в отличие от ВебДрайвера.


(Ray Romanov) #11

Вот пользователи то как раз с этим проблем и не испытывают, даже не особо обращают внимания что страница не догрузилась (90% пользователей, хе сами же такие)


(Sergey Korol) #12

На всякий случай спрошу: а при тестировании руками такое тоже наблюдается? Что в этот момент показывает Network tab?

Я спрашиваю к тому, что порой дело не в самом сайте, а в железе и специфичных опциях браузера.
К примеру, недавно открыл для себя пагубное влияние следующего Chrome флага на процесс прогрузки первой страницы - Use hardware accelaration when available. Причем, он включен по дефолту. А у меня есть 2 VMки с расшаренными ресурсами. В итоге, 1 из них выдавала эффект зависания, подобный описанному выше. Решалось запуском тестов с опцией отключающей упомянутый флаг.


(Ray Romanov) #13

Зависания наблюдаются на тест машине, стоит:
Linux MINT 17.2
Selenium
Chrome, FF
Зависания наблюдаются в обоих браузерах, а вот на рабочей машине в мастдае таких подвисов не наблюдал, может связано с тем что мастдай для тестов не используется или не обращал внимания. А хард акселирацию сейчас отключу и проверю.


(sidelnikovmike) #14

Как и было замечено - это поведение, которое видит конечный пользователь. Не нужно костылей, просто нужно ждать и все. Иначе это уже неполноценная проверка. А если ваш сервис крашится после загрузки рекламы? Вдруг?


(Konstantin) #15

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

Мало вероятно.

.


(vmaximv) #16

Конечный пользователь так-же, с легкостью, может “забанить” паразитный трафик.

Ждать пока прогрузится какой-нибудь информер погоды/курсов/etc и терять на этом минуты? Полноценная проверка чего - сторонних ресурсов?

Самый простой вариант - отсутствие интернета на тестовом стенде - но это не всегда возможно.

Если есть такие подозрения - никто не мешает сделать отдельные тесты на интеграцию со внешними ресурсами.


(barancev) #17

Вот здесь я рассказал, как бороться с длительной загрузкой страниц:


(Konstantin) #18

воо то что нужно. Огромное спасибо!


(Ray Romanov) #19

У меня настроено eager уже больше месяца, но к сожалению монописуально :frowning:


(vmaximv) #20

driver.manage().timeouts().pageLoadTimeout()
А вот это уже спорно - так как распространяется на весь контент.

pageLoadStrategy
Ранее было уделом “избранных” браузеров. Вижу что Джим прикрутил это к ИЕ только в августе апреле сего года. И насколько эта фича стабильна - наверняка мало кому известно (например iedriverserver до сих пор шарашит css локаторы через Sizzle). А как дела у остальных?


Codeception Cest тесты могут зависать на несколько минут