watir-webdriver ждать загрузки страницы
используя watir-webdriver, как мне ждать загрузки страницы после нажатия ссылки?
На данный момент я делаю:
sleep n
но это не идеально, так как ответ страницы сильно варьируется.
есть ли способ проверить, готова ли страница или есть ли определенный элемент на странице. Я понимаю, что в нормальном watir Перл есть Watir::Waiter.wait_until
или что-то подобное, но я не вижу этого в версии webdriver.
7 ответов
Я не знаю, являются ли они лучшим способом, но вот как я обрабатываю это для ожидания обновления div, чтобы очистить:
while browser.div(:id=>"updating_div").visible? do sleep 1 end
вот как я обрабатываю ожидание чего-то для отображения:
until browser.div(:id=>"some_div").exists? do sleep 1 end
сегодняшний выпуск добавляет необязательное требование, которое приносит некоторые помощники для ожидания элементов. Они (на данный момент) недоступны в Watir 1.6, поэтому имейте в виду, если вы используете обе библиотеки бок о бок.
проверьте страницу на AJAX и ожидание элементов в Вики Watir-webdriver
browser.wait_until
метод может быть использован его более полезным, можно определить, что ждать в ()
as browser.wait_until(browser.text.include("some text"))
вот как я жду AJAX в своем проекте...
ajax_loader = $b.element(:xpath => "//*[@id='spinner-modal-transparent' and @aria-hidden='true']/div/div/div/div/img[@alt='Ajax transparent loader']")
if ajax_loader.exists?
ajax_loader.wait_while_present(timeout=350)
else
puts "The AJAX loader was not present."
end
лучшее резюме можно найти здесь:http://watir.com/guides/waiting/
вот он в двух словах:
require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present
b.text_field(:id => 'entry_0').when_present.set 'your name'
b.button(:value => 'Submit').click
b.button(:value => 'Submit').wait_while_present
Watir::Wait.until { b.text.include? 'Thank you' }
я встречаю те же проблемы с вами, и я пытаюсь исправить это, расчесывая wait_until_present
способ и until browser.div(:id=>"some_div").exists? do sleep 1 end
трюки повидал @marc:
some_div = browser.div(:id => 'some_div')
begin
Watir::Wait.until
some_div.visible?
end
rescue Watir::Wait::TimeoutError
until some_div.visible?
sleep 1
end
end
и заметили, что это ваша собственная ответственность, чтобы убедиться, что div(:id => "some_div")
do exist