Javascript Nightwatch.js:窗口未定义
我正在尝试使用Nightwatch测试React应用程序。我用的是React路由器 使用NightwatchJavascript Nightwatch.js:窗口未定义,javascript,selenium,reactjs,nightwatch.js,Javascript,Selenium,Reactjs,Nightwatch.js,我正在尝试使用Nightwatch测试React应用程序。我用的是React路由器 使用Nightwatch窗口运行我的测试时未定义 React使用以下代码段测试DOM是否可用: var canUseDOM = !!( typeof window !== 'undefined' && window.document && window.document.createElement ); 从React.js来源: React路由器期望canUseDOM
窗口运行我的测试时
未定义
React使用以下代码段测试DOM是否可用:
var canUseDOM = !!(
typeof window !== 'undefined' &&
window.document &&
window.document.createElement
);
从React.js来源:
React路由器期望canUseDOM
为true,否则它会抛出
错误
所以我的测试失败了,因为在运行Nightwatch时,window
未定义
selenium webdriver不应该有窗口
?
如何使窗口可用?从Nighwatch.js(更具体地说是selenium webdriver)您无法直接访问客户端的DOM。
必须使用execute()函数注入脚本:
this.demoTest = function (browser) {
browser.execute(function(data) {
var canUseDOM = !!(
typeof window !== 'undefined' &&
window.document &&
window.document.createElement
);
alert('canUseDOM ?' + canUseDOM);
return true;
}, [], null);
};
API中的更多信息:事实证明,我在测试中加载应用程序代码时没有注意到,我的夜间监视配置不太正确。这就是引发错误的地方,因为Nightwatch正在尝试访问测试代码中的窗口。您能提供更多详细信息吗?你在哪里检查?你是说canUseDOM?这是React的一部分。如果canUseDOM为false,React Router会抛出错误,这是因为运行Nightwatch时窗口未定义。因此,React会在WebDriver浏览器加载页面时抛出错误?React Router会在尝试执行Router时抛出错误。runThis代码有效。。但是删除不需要的警报会导致执行挂起吗?