如何使用JavaScript在Selenium RC中使用xpath?

时间:2010-03-29 08:36:41

标签: javascript selenium xpath selenium-rc

我正在使用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定位器的速度提高但是 改进不一致。在一些运行中花费的时间 定位器减半;虽然有时它随机高。

我在这里错过了任何配置步骤吗?如果有人会很棒 谁取得了成功,可以分享他们的观点和方法。

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

2 个答案:

答案 0 :(得分:4)

我自己实现了这个,我只需要做selenium.useXpathLibrary(“javascript-xpath”)。在我的测试中,javascript xpath在IE 8上快了大约7倍。还没有真正测试过其他任何东西,但我们只将它用于IE。

答案 1 :(得分: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的两倍。