2010-03-29 11 views
7

Estoy usando Selenium RC con IE 6 y los localizadores XPath son terriblemente lento. Así que estoy tratando de ver si javascript-xpath realmente acelera las cosas.¿Cómo usar xpath en Selenium RC con JavaScript?

Pero no pude encontrar la documentación suficiente/clara sobre cómo usar las bibliotecas nativas x- path.

que estoy haciendo lo siguiente:

protected void startSelenium (String testServer, String appName, String testInBrowser){ 
    selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/"); 
    echo("selenium instance created:"+selenium.getClass()); 
    selenium.start(); 
    echo("selenium instance started..." + testServer + "/" + appName +"/"); 

    selenium.runScript("lib/javascript-xpath-latest-cmp.js"); 
    selenium.useXpathLibrary("javascript-xpath"); 
    selenium.allowNativeXpath("true"); 
} 

Esto se traduce en una mejora de la velocidad de XPath localizador pero los mejoras no son consistentes. En algunas ejecuciones, el tiempo de un localizador se reduce a la mitad; mientras que a veces es aleatoriamente alto.

¿Falta aquí algún paso de configuración? Sería genial si alguien que ha tenido éxito con esto pudiera compartir sus puntos de vista y enfoque.

Gracias, Nirmal

Solución:

protected void startSelenium (String testServer, String appName, String testInBrowser){ 
    selenium = new DefaultSelenium("localhost", 4444, "*" +testInBrowser, testServer+ "/"+ appName + "/"); 
    echo("selenium instance created:"+selenium.getClass()); 
    selenium.start(); 
    echo("selenium instance started..." + testServer + "/" + appName +"/"); 

    selenium.useXpathLibrary("javascript-xpath"); 
} 

Respuesta

4

Implementé esto por mi cuenta y solo tuve que hacer selenium.useXpathLibrary ("javascript-xpath"). En mis pruebas, JavaScript xpath era aproximadamente 7 veces más rápido en IE 8. Realmente no he probado nada más, pero solo lo usamos para IE.

+0

Hola Dan, Si no agregamos explícitamente el script; ¿De dónde viene el motor? ¿El selenio ya incluye este js? No pude encontrar ninguna evidencia de ese tipo. –

+0

Si observa el código fuente de Selenium, verá que javascript-xpath-0.1.11.js se incluye en common \ src \ js \ core \ xpath, por lo que asumo que está extrayendo de eso. ALGO está resultando en que mis pruebas sean 7 veces más rápidas. =) –

0

nunca he hecho esto, pero creo que es posible que tenga que hacer algo como

//Add the library to the page since runScript just does an eval on the JS 
selenium.runScript("document.body.append(document.createElement('script')).src = 'path/to/lib');"); 
selenium.useXpathLibrary("javascript-xpath"); 
selenium.allowNativeXpath("true"); 

Usted tendrá que añadir la biblioteca a la página y luego cargarlo.

Sin embargo, recomendaría utilizar selectores de CSS en lugar de selectores de XPath, ya que son mucho más rápidos en Selenium. Puede ver cómo usar diferentes estrategias de localizador here. He visto pruebas llegar al menos dos veces más rápido que el XPath original.

+0

Actualmente estoy usando selectores CSS ... pero son un poco más complicados y hay más problemas al usarlos con IE. Estoy explorando las mejoras de velocidad que ofrece javascript-xpath para ver que se comparan con los selectores de CSS. –

Cuestiones relacionadas