2010-03-29 3 views
7

Я использую Selenium RC с IE 6 и локаторы XPath ужасно slow. Итак, я пытаюсь проверить, ускоряет ли javascript-xpath.Как использовать xpath в Selenium RC с JavaScript?

Но не удалось найти достаточную/четкую документацию о том, как использовать собственные библиотеки путей x- .

Я делаю следующее:

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

Это приводит к улучшению скорости XPath локатора но улучшение не является последовательным. На некоторых прогонах время, затраченное на локатор , уменьшается вдвое; в то время как иногда его случайным образом высокий.

У меня отсутствует какой-либо шаг конфигурации здесь? Было бы здорово, если бы кто-то , у которого был успех, мог поделиться своими взглядами и подходом.

Спасибо, Nirmal

Решение:

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

ответ

4

Я реализовал это самостоятельно, и мне нужно было сделать только selenium.useXpathLibrary ("javascript-xpath"). В моих тестах javascript xpath был примерно в 7 раз быстрее в IE 8. На самом деле не тестировалось ни на что другое, но мы используем его только для IE.

+0

Hi Dan, Если мы явно не добавим скрипт; откуда движется двигатель? Селен уже включает этот js ?? Я не смог найти таких доказательств. –

+0

Если вы посмотрите на исходный код Selenium, вы увидите, что javascript-xpath-0.1.11.js входит в общий \ src \ js \ core \ xpath, поэтому я предполагаю, что это отвлекает от этого. SOMETHING приводит к тому, что мои тесты пройдут в 7 раз быстрее. знак равно –

0

Я никогда не делал этого, но думаю, что вам может понадобиться, чтобы сделать что-то вроде

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

Вам нужно будет добавить библиотеку на страницу, а затем загрузить ее.

Однако я бы рекомендовал использовать селектор CSS вместо селекторов XPath, поскольку они намного быстрее в Selenium. Вы можете увидеть, как использовать разные стратегии локатора. here. Я видел, как тесты стали как минимум в два раза быстрее, чем исходный XPath.

+0

В настоящее время я использую CSS-селектора ... но они немного сложнее, и при использовании их с IE возникают проблемы. Изучая улучшения скорости, предлагаемые javascript-xpath, чтобы увидеть, что они сравниваются с селекторами CSS. –

Смежные вопросы