У меня есть несколько тестов, которые работают с Selenium и HtmlUnitDriver. Иногда, когда я запускаю их и хочу нажать на элемент или прочитать текст, элементы не могут быть найдены. Каждый раз, когда выдается исключение, я сохраняю код страницы для целей отладки. Но когда я проверяю код, там есть элемент, и когда я снова запускаю тест, все работает нормально.
Я предполагаю, что страница была загружена не полностью, когда я пытаюсь получить доступ к элементу.
Поэтому я хотел бы подождать, пока Selenium завершит загрузку страницы, прежде чем я попытаюсь получить доступ к элементам.
Мне нравятся два способа добиться этого:
Выполните Javascript (например, window.initComplete) и дождитесь, пока результат будет истинным. Проблема: в Selenium у меня должен быть экземпляр JavascriptExecuter, но HtmlUnitDriver не является производным от этого класса, и я не могу переключиться на FirefoxDriver (который реализует интерфейс JavascriptExecuter), потому что мы запускаем тесты без головы.
Подождите, пока загрузится последний элемент на странице
Проблема этого подхода заключается в том, что страница основана на нашей структуре, и если она меняется, и вдруг в нижней части страницы появляются разные элементы, я должен адаптировать каждый тест.
Есть предложения о том, как подойти к проблеме?