2010-03-29 6 views
7

J'utilise Selenium RC avec IE 6 et les localisateurs XPath sont terriblement lent. J'essaie donc de voir si javascript-xpath accélère réellement les choses.Comment utiliser xpath dans Selenium RC avec JavaScript?

Mais n'a pas pu trouver suffisamment de documentation sur l'utilisation des bibliothèques de chemins x- natives.

que je fais ce qui suit:

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

Il en résulte une amélioration de la vitesse de localisation XPath, mais les améliorations ne sont pas compatibles. Sur certaines analyses, le temps nécessaire pour un localisateur est réduit de moitié; alors que parfois c'est aléatoirement élevé.

Ai-je manqué une étape de configuration ici? Serait génial si quelqu'un qui a eu du succès avec cela pourrait partager leurs points de vue et leur approche.

Merci, Nirmal

Solution:

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

Répondre

4

J'ai implémenté ceci moi-même et je n'avais qu'à faire selenium.useXpathLibrary ("javascript-xpath"). Dans mes tests, le xpath javascript était environ 7x plus rapide sur IE 8. N'a pas vraiment testé sur autre chose, mais nous ne l'utilisons que pour IE.

+0

Salut Dan, Si nous n'ajoutons pas explicitement le script; D'où vient le moteur? Est-ce que le sélénium inclut déjà ce js ?? Je n'étais pas capable de trouver une telle preuve. –

+0

Si vous regardez le code source de Selenium, vous verrez que javascript-xpath-0.1.11.js est inclus dans le répertoire \ src \ js \ core \ xpath, donc je suppose qu'il tire parti de ça. QUELQUE CHOSE fait que mes tests vont 7 fois plus vite. =) –

0

Je ne l'ai jamais fait cela, mais pense que vous devrez peut-être faire quelque chose comme

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

Vous devrez ajouter la bibliothèque à la page, puis le charger. Cependant, je recommanderais d'utiliser des sélecteurs CSS au lieu des sélecteurs XPath car ils sont beaucoup plus rapides dans Selenium. Vous pouvez voir comment utiliser différentes stratégies de localisation here. J'ai vu les tests devenir au moins deux fois plus rapides que le XPath original.

+0

Je suis actuellement en utilisant des sélecteurs CSS ... mais ils sont un peu plus compliqués et il y a plus de problèmes lors de leur utilisation avec IE. J'explore les améliorations de vitesse offertes par javascript-xpath pour le comparer aux sélecteurs CSS. –

Questions connexes