我是selenium和javascript的新手。 我想将一个名为VisualEvent的javascript加载到在selenium控制的浏览器中打开的页面。然后从java中的selenium访问其变量。 第一阶段完美地完成如下:
driver = new FirefoxDriver();
driver.get("http://stackoverflow.com/");
String script = //Minified of below script
//////////////
(function() {
var protocol = window.location.protocol === 'file:' ? 'http:' : '';
var url = protocol + '//www.sprymedia.co.uk/VisualEvent/VisualEvent_Loader.js';
if (typeof VisualEvent != 'undefined') {
if (VisualEvent.instance !== null) {
VisualEvent.close();
} else {
new VisualEvent();
}
} else {
var n = document.createElement('script');
n.setAttribute('language', 'JavaScript');
n.setAttribute('src', url + '?rand=' + new Date().getTime());
document.body.appendChild(n);
}
})();
///////////////////////
Object[] a = { null, null, null };
driver.executeScript(script, a);
但是当我想访问window.VisualEvent
时:
script = "return window.VisualEvent.instance;";
Object b = driver.executeScript(script, a);
抛出这个例子:
Exception in thread "main" org.openqa.selenium.JavascriptException: TypeError: window.VisualEvent is undefined
当我在相同的浏览器控制台中执行此操作时,我将获得参考。
此外,我可以从selenium访问winow.document
个对象。
有什么想法吗?
答案 0 :(得分:0)
正如Andy Ray评论的那样,VisualEvent脚本没有完全加载。所以我通过睡眠硒线来解决它。