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

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

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

var canUseDOM = !!(
  typeof window !== 'undefined' &&
  window.document &&
  window.document.createElement
);

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



所以我的测试失败了,因为运行 Nightwatch 时 window 未定义。
window 不应该与 selenium webdriver 一起出现吗?
如何使 window 可用?

最佳答案

从 Nightwatch.js(和 selenium-webdriver,更具体地说)你不能直接访问客户端的 DOM。
您必须使用 execute() 函数来注入(inject)您的脚本:

 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 中的更多信息:http://nightwatchjs.org/api#execute

关于javascript - Nightwatch.js:窗口未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29715293/

10-13 05:19