Есть ли способ обновлять страницу как можно больше раз и ждать загрузки элемента на этой странице в selenium?

#selenium-webdriver

#selenium-webdriver

Вопрос:

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

Есть ли какой-либо встроенный метод в selenium, использующий Ruby в качестве языка программирования?

Ответ №1:

Просто для подтверждения, похоже, что страница не обновляется динамически после того, как содержимое доступно, поэтому вам нужно подождать, пока это не станет правдой, а затем обновить вручную, верно?

Я не знаю ничего встроенного в selenium для обработки этого. Такое ощущение, что это может быть даже признаком пользовательского интерфейса, который нуждается в дополнительной разработке (простите за критику). Если пользователь испытывает то же самое, что и при тестировании — запускает действие, ожидает какой-то неопределенный период времени, а затем вручную обновляет, чтобы увидеть результаты — это своего рода паршивый пользовательский интерфейс. Если это неверное предположение и есть обратная связь (например, счетчик), то лучшим вариантом будет условно дождаться появления счетчика, а затем исчезнуть, а затем обновить один раз.

Если на самом деле нет видимой обратной связи, у вас все еще есть пара вариантов:

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

Среда: в цикле переходите в режим ожидания с постоянной задержкой, обновляйте, повторяйте до некоторого тайм-аута.

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

Ответ №2:

Вы можете использовать метод ожидания, чтобы элемент был доступен. Если вам нужно постоянно обновлять страницу, просто обязательно ждите после каждого обновления.