пятница, 15 июня 2018 г.

Selenium: дожидаемся загрузки страницы

Наверное, почти каждый, кто пробовал писать тесты на Selenium, знаком с explicit wait и implicit wait.

Но иногда их не хватает, да и хочется чтобы тесты работали быстро.

Еще есть AJAX и скрипты, которые подгружают контент только при скроле странички и не дают нам успокоиться просто установкой таймаутов. Нужно что-то еще.

Конечно, для каждого случая тут можно придумать "свое решение" (что чаще всего и делают).

Здесь хочу поделиться хорошей ссылкой, как один инженер уже решил такую задачу для себя (и почему эта проблема возникла у него):
https://blog.codeship.com/get-selenium-to-wait-for-page-load/

Мое решение я сделал в виде функции, может, и не самой красивой, но у страничек почти не остается шансов незагрузить весь свой контент (для загрузки картинок, конечно, нужна дополнительная магия и она тоже есть в виде отдельной функции).

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

Такую функцию можно использовать для элементарных тестов на время загрузки страниц в браузере (с учетом времени на рендеринг страницы и загрузку всех картинок)

Код доступен здесь: https://github.com/TimurNurlygayanov/test-tasks-example/blob/master/selenium_wait.py

Комментарии и предложения о том, как можно сделать лучше, приветвуются )).