【发布时间】:2018-02-27 13:27:18
【问题描述】:
我正在尝试使用外部 javascript 源将 Javascript 代码注入 Selenium webdriver。所以基本上,我用这个注入 DOM:
public class Testing extends BaseInitialization{
public static void main(String args[]) {
new Testing();
}
public Testing() {
driver.get("http://www.google.com/");
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse
.executeScript("var s=window.document.createElement('script');" +
" s.type = 'text/javascript'; s.src='elementController.js';" +
" window.document.head.appendChild(s);");
jse.executeScript("test();");
}
}
这是我的 js 文件:
document.ourFunction = function(){
alert("Hey");
}
function test() {
alert(1);
}
这是我项目结构中的一个 sn-p(js 文件与测试类处于同一级别):
但由于某种原因,根本没有加载外部 javascript。注入本身似乎有效,因为当我用直接 javascript 替换源文件名(例如警报)时,它可以工作(浏览器打开,它转到 google 和警报),但是当我尝试从 js 文件中获取 javascript 时,它失败。我做错了什么?
【问题讨论】:
-
甚至脚本节点插入到 DOM 树中。但浏览器不执行其中的javascript。您可以在 Devtool 的控制台中执行您的 javascript 代码,您会发现该脚本也不起作用。我还没有找到浏览器动态插入的脚本节点不执行的原因。
-
如果改成 jse.executeScript("ourFunction();"); 会发生什么stackoverflow.com/questions/17385779/…
-
很遗憾不起作用
-
请在 jse.executeScript("test();"); 之前添加一些 sleep()
标签: javascript java selenium