how watir webdriver watir-webdriver firewatir safariwatir

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")