watir - how - selenium
Watir-webdriver espera para cargar la página (7)
Así es como espero a AJAX en mi proyecto ...
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
Con watir-webdriver , ¿cómo espero a que se cargue una página después de hacer clic en un enlace?
En el momento estoy haciendo:
sleep n
Pero esto no es ideal ya que la respuesta de la página varía mucho.
¿Existe un método para probar si la página está lista o si hay un elemento determinado en la página? Entiendo que en la gema de watir normal hay Watir::Waiter.wait_until
o algo similar, pero no puedo ver esto en la versión de webdriver.
El lanzamiento de hoy agrega un requisito opcional que trae algunos ayudantes para esperar elementos. Estos no están (en este momento) disponibles en Watir 1.6, así que tenga en cuenta si utiliza ambas bibliotecas una al lado de la otra.
Verifique la página en AJAX y espere elementos en el Wiki de Watir-webdriver
El mejor resumen se encuentra aquí: http://watir.com/guides/waiting/
Aquí es en pocas palabras:
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'' }
No sé si son de la mejor manera, pero así es como manejo esto para esperar a que se actualice la división div:
while browser.div(:id=>"updating_div").visible? do sleep 1 end
Así es como manejo la espera de que aparezca algo:
until browser.div(:id=>"some_div").exists? do sleep 1 end
Se puede utilizar el método browser.wait_until
más útil, puede definir qué esperar en ()
como browser.wait_until(browser.text.include("some text"))
puedes usar wait_until ....
o
métodos de waituntilExists
wait_until_present
los mismos problemas con usted, y trato de solucionarlo wait_until_present
método wait_until_present
y until browser.div(:id=>"some_div").exists? do sleep 1 end
until browser.div(:id=>"some_div").exists? do sleep 1 end
trucos until browser.div(:id=>"some_div").exists? do sleep 1 end
proporcionados por @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
Y tenga en cuenta que es su responsabilidad asegurarse de que exista el div(:id => "some_div")