我正在尝试使用Nightwatch来测试React应用程序。我正在使用React-Router。
使用Nightwatch window
运行测试时未定义。
React使用以下代码段来测试DOM是否可用:
var canUseDOM = !!(
typeof window !== 'undefined' &&
window.document &&
window.document.createElement
);
来自React.js来源:ExecutionEnvironment.js#L16
React-Router期望
canUseDOM
为真,否则抛出一个 错误。
所以我的测试失败了,因为在运行Nightwatch时window
未定义。
selenium webdriver不应该window
出现吗?
如何使window
可用?
答案 0 :(得分: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);
};
API中的更多信息:http://nightwatchjs.org/api#execute
答案 1 :(得分:0)
事实证明我在我的测试中加载了应用程序代码而没有注意到,我的夜间配置配置并不完全正确。所以这就是引发错误的地方,因为Nightwatch试图访问测试代码中的window
。