Javascript Nightwatch.js:窗口未定义

Javascript 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

我正在尝试使用Nightwatch测试React应用程序。我用的是React路由器

使用Nightwatch
窗口运行我的测试时
未定义

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代码有效。。但是删除不需要的警报会导致执行挂起吗?