Как ждать загрузки страницы в селеновом вебдрайвере
Я использую selenium-server-3.7.1 и Firefox 57
Как дождаться полной загрузки страницы
Я попытался следующий возврат ((JavascriptExecutor) драйвер).executeScript( "return document.readyState"). Equals("complete");
Но это не работает
По сути, приведенная выше команда не распознает следующие операции [testng] 1535139249496 addons.productaddons ИНФОРМАЦИЯ, отправляющая запрос на: https://aus5.mozilla.org/update/3/GMP/57.0.4/20180103231032/Linux_x86_64-gcc3/en-US/release/Linux%204.1.12-112.14.10.el7uek.x86_64%20(GTK%203.22.10%2Clibpulse%2010.0.0)/default/default/update.xml [testng] 1535139249669 addons.productaddons INFO Завершена загрузка документа [testng] 1535139249818 addons.productaddons ИНФОРМАЦИЯ downloadXHR Загрузка файла. status = 200 [testng] 1535139249821 addons.productaddons INFO Загруженный файл будет сохранен в / tmp / tmpaddon-c61a84 [testng] 1535139738375 addons.manager INFO Пропуск проверки фона обновления [testng] 1535139978387 DeferredSave.extensions.json DEBUG изменения Изменения Сохранить 1535139978387 DeferredSave.extensions.json DEBUG Запуск таймера [testng] 1535139978409 DeferredSave.extensions.json DEBUG Начало записи [testng] 1535139978412 DeferredSave.extensions.json DEBUG Запись успешно завершена
Я дал жесткий сон в течение 30 секунд, чтобы завершить эти операции. Есть ли способ ожидания завершения этих операций?
2 ответа
В сценарии автоматизации необходимо подождать несколько экземпляров. Там нельзя использовать Thread.Sleep(); каждый раз. Странице нужно ждать JQuery, JavaScript, угловой загрузки. И с которым нельзя справиться только document.readyState
Мы должны ждать всех веществ, если приложение построено на. Итак, мы можем создать один метод для ожидания загрузки страницы, и этот метод может вызываться несколько раз.
Это ссылка на блог для того же, который поможет вам понять это. Кликните сюда
Вы можете включить тот метод, на котором строится ваше приложение.
Если в случае потери ссылки на блог, есть пример проекта Github для того же. Кликните сюда
Wait wait = new FluentWait(driver)
.withTimeout(30000, TimeUnit.SECONDS) .pollingEvery(5, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class);
Надеюсь, что это поможет вам