Как использовать xpath в Selenium RC с JavaScript? - PullRequest
7 голосов
/ 29 марта 2010

Я использую Selenium RC с IE 6 и локаторы XPath ужасно медленный. Поэтому я пытаюсь понять, действительно ли javascript-xpath ускоряет процесс.

Но не смог найти достаточно / четкой документации о том, как использовать нативный 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, но улучшения не соответствуют. На некоторых пробегах время, затрачиваемое на локатор пополам; в то время как иногда это беспорядочно высоко.

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

Спасибо, Нирмал

Решение:

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

Ответы [ 2 ]

4 голосов
/ 30 марта 2010

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

0 голосов
/ 29 марта 2010

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

//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. Вы можете увидеть, как использовать различные стратегии локатора здесь . Я видел, что тесты стали как минимум вдвое быстрее, чем оригинальный XPath.

...