2011-10-08 25 views
12

Estoy usando la sintaxis de WebDriver de selenio. Yo sé, que en la sintaxis basada en servidor selenio, que puede desencadenar un evento javascript haciendo:¿Cómo disparar el evento JS en selenio?

Selenium selenium = new DefaultSelenium("localhost", server.getPort(), 
      "*iexplore", "http://www.eviltester.com"); 
selenium.fireEvent("lteq30", "blur"); 

¿Cómo puedo hacer lo mismo en una aplicación, creada con WebDriver (por ejemplo, FirefoxDriver)?

Respuesta

17

Desafortunadamente los diseñadores selenio WebDriver explícitamente decided not to include esta funcionalidad en selenio 2.

Es una decisión deliberada de no incluir esta característica en WebDriver, ya que usualmente es un truco para eventos en torno sintetizados no comportándose adecuadamente . Preferimos eliminar esta necesidad proporcionando una gran compatibilidad con para eventos nativos, por lo que continuaremos mejorando el progreso de . Un usuario nunca lanzaría un evento de foco, haría clic en el control de formulario . Eso es lo que tus pruebas deberían estar haciendo también.

Con eso dicho, puede ejecutar cualquier código de javascript que desee. Por lo tanto, debe buscar en cómo activar eventos con javascript. Eche un vistazo al this StackOverflow question para inspirarse.

A continuación, puede hacer algo como esto:

FirefoxDriver driver = new FirefoxDriver(); 
driver.ExecuteScript("[your fire event javascript code]"); 

Estoy seguro de que podría crear una función de contenedor para llevar a cabo, básicamente, lo mismo que fireEvent.

+0

simplemente correr el clic (evento) en JS hacer el trabajo o hago realmente se necesita para ejecutar la función específica en el código? Si es el último, parece una fea dependencia para introducir en las pruebas. –

5

Otra solución:

((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()"); 
+1

¿por qué tiene una declaración de devolución en esto? ¿No funcionaría sin el retorno? –

+1

La declaración de devolución no es necesaria para la funcionalidad. Pero con la declaración de devolución, también recibes la respuesta. –

Cuestiones relacionadas