Selenium WebDriver: подождите, пока загрузится сложная страница с JavaScript

У меня есть веб-приложение для тестирования с Selenium. При загрузке страницы выполняется много JavaScript.
Этот код JavaScript написан не очень хорошо, но я ничего не могу изменить. Таким образом, ожидание появления элемента в DOM с помощью метода findElement()не вариант.
Я хочу создать общую функцию на Java для ожидания загрузки страницы. Возможным решением может быть:

  • запуск JavaScript-скрипта из WebDriver и сохранение результата document.body.innerHTMLв строковая переменная тело.
  • сравните переменную bodyс предыдущей версией body. если они одинаковы, то установите счетчик notChangedCountна приращение, в противном случае установите notChangedCountна ноль.
  • немного подождать (например, 50 мс).
  • если страница не менялась в течение некоторого времени (например, 500 мс), поэтому notChangedCount >= 10, то выйти из цикла, в противном случае перейти к первому шагу.

Считаете ли вы это правильным решением?

95
задан Nick 24 May 2019 в 05:45
поделиться