2010-01-06 11 views
16

Tengo una situación bastante estándar: haga clic en un botón, carga una página de transición con una barra de progreso o algo, y luego esa página redirige a la siguiente página, que tarda un tiempo en cargarse.Cómo hacer que el selenio espere una página de transición para redirigir antes de ejecutar una afirmación

Quiero ejecutar las afirmaciones en la página final, no en la página de transición. ¿Cómo le digo a Selenium IDE que espere hasta que se cargue la página final antes de realizar las afirmaciones?

Gracias.

Respuesta

13

Un enfoque simple sería esperar a que algo de texto "en particular" en esa página final, véase el comando "waitForText" para obtener más información sobre ella

+0

dulce. Una cosa que hice fue agregar un comando setTimeout target = XXXX (en ms) antes de waitForText, y eso redujo el tiempo que esperó cuando la aserción no se cumplió. Muchas gracias, John. –

+1

También puede usar waitForLocation y darle la url. – user3735633

+0

¿cómo se hace waitForLocation? – poyger

1

Se podría llamar wait_for_page dos veces seguidas. El primero espera la redirección, el segundo para la página final.

5

Para agregar al enfoque de John, se puede utilizar el selenio esperar mecanismo para verificar que los elementos en su página final están presentes de este modo:

Java:

WebDriverWait wait = new WebDriverWait(webDriver, 10); //seconds 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo))); 

Ruby:

wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds 
wait.until { driver.find_element(:id => "foo") } 

This will siga correctamente cualquier redirección involucrada.

Ejemplo de https://code.google.com/p/selenium/wiki/RubyBindings

0

También puede esperar hasta que el título de la página es un valor esperado:

$driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect')); 
Cuestiones relacionadas