从selenium访问窗口的对象

时间:2017-04-15 14:35:15

标签: javascript selenium

我是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个对象。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

正如Andy Ray评论的那样,VisualEvent脚本没有完全加载。所以我通过睡眠硒线来解决它。