Nightwatch.js:窗口未定义

Seb*_*ian 4 javascript selenium reactjs nightwatch.js

我正在尝试使用Nightwatch来测试React应用程序.我正在使用React-Router.

使用Nightwatch运行我的测试时window未定义.

React使用以下代码片段来测试DOM是否可用:

var canUseDOM = !!(
  typeof window !== 'undefined' &&
  window.document &&
  window.document.createElement
);
Run Code Online (Sandbox Code Playgroud)

来自React.js源:ExecutionEnvironment.js#L16

React-Router期望canUseDOM为true,否则会引发错误.

所以我的测试失败了因为window在运行Nightwatch时未定义.

window应该与硒webdriver一起出现?我该如何window提供?

Nic*_*nec 7

从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);
 };
Run Code Online (Sandbox Code Playgroud)

API中的更多信息:http://nightwatchjs.org/api#execute