2017-04-15 43 views
0

我是新来的硒和JavaScript。 我想加载一个名为VisualEvent的JavaScript到在硒控制浏览器中打开的页面。然后从java中的硒访问它的变量。 第一阶段是由以下完全可以做到的:从硒访问窗口对象

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); 

这execption抛出:

Exception in thread "main" org.openqa.selenium.JavascriptException: TypeError: window.VisualEvent is undefined 

,当我在同一个执行此同时,浏览器控制台,我会得到参考。 此外,我有权访问硒的winow.document对象。 有什么想法?

+1

您并未等待脚本完成下载 –

回答

0

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

相关问题