【发布时间】:2017-08-09 21:21:14
【问题描述】:
我正在尝试使用 NightmareJS 加载页面,单击按钮,然后截屏进行测试。按钮上的单击处理程序请求地理位置。这是我正在测试的一部分。如果用户授予地理定位权限,我希望页面以某种方式显示,如果他们拒绝,则以另一种方式显示。
问题是 Nightmare 没有公开方法让我拦截权限提示以接受或拒绝它。经过一些研究,我了解到 Electron 只是将此权限硬编码为“授予”,因此甚至可能没有办法将其设置为拒绝。
我想做的是将 Electron 的 navigator.geolocation 对象替换为以某种方式响应地理定位请求的模拟。
new Nightmare().goto('https://example.com')
.evaluate(function () {
navigator.geolocation = {
getCurrentPosition(cb) {
cb({coords: latitude: 42, longitude: -42});
}
}
})
.click('#locateMe')
.screenshot()
.end()
.then(diffScreenshot)
但是,当我尝试这样做时,navigator.geolocation 对象似乎没有改变。有没有其他方法可以实现这个目标?
【问题讨论】:
标签: javascript testing mocking electron nightmare