如何在Selenium WebDriver中调用user-extensions.js

时间:2011-11-30 12:29:23

标签: java selenium user-extensions.js

我需要使用user-extensions.js中定义的函数。我们正处于从RC迁移到webdriver的过程中。我才知道,有JavascriptExecutor会替换runScript和getEval.But我将如何指定user-extensions.js文件。 是否与java -jar selenium-server-standalone.jar -userExtensions user-extensions.js相同?

3 个答案:

答案 0 :(得分:4)

最后,经过2年零2个月,我找到了一个在webdriver中使用用户扩展文件的解决方案,现在我们正在迁移到webdriver。

 loadjsFile(driver);

功能如下:

public static void loadjsFile(WebDriver driver){
String scriptSrc = "http://localhost:8080/test/user-extensions.js";
String injectScript = "var script = document.createElement(\"script\");";
injectScript += "script.src = \""+scriptSrc+"\";";
injectScript += "script.setAttribute(\"type\",\"text/javascript\");";
injectScript += "document.body.appendChild(script);";
((JavascriptExecutor) driver).executeScript(injectScript);
}

答案 1 :(得分:1)

没有办法注入像Selenium RC这样的测试运行可用的javascript,这里有一个关于一些可能的迁移提示的帖子:http://groups.google.com/group/selenium-developers/browse_thread/thread/15cb4b774b734cc7/c7baf10db0bc2bc0

答案 2 :(得分:1)

他们现在有一个名为IJavaScriptExecutor的接口,可用于替换用户扩展。

这是C#/ NUnit版本。

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
long tableRowCount = (long)js.ExecuteScript("return $('#tableid tr').length);

这是Java / JUnit版本:

JavascriptExecutor js = (JavascriptExecutor) driver;
Object o = js.executeScript("return '123'");