首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NightmareJS模拟内置对象

用NightmareJS模拟内置对象
EN

Stack Overflow用户
提问于 2017-08-09 21:21:14
回答 1查看 140关注 0票数 1

我正在尝试使用NightmareJS加载一个页面,单击一个按钮,然后取一个屏幕截图进行测试。按钮上的单击处理程序请求地理位置。这是我测试的一部分。如果用户授予地理定位权限,我希望页面以特定的方式显示,如果用户拒绝,则以另一种方式显示。

问题是,梦魇没有公开一个方法,让我拦截权限提示来接受或拒绝它。经过一些研究,我了解到,电子只是硬编码这一许可,以“授予”,因此,甚至可能没有办法将其设置为拒绝。

我想要做的是用一个模拟替换电子的navigator.geolocation对象,它以某种方式响应地理位置请求。

代码语言:javascript
复制
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对象似乎没有改变。还有其他方法来实现这个目标吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-11 01:57:48

我认为这在两个项目中都是可能的(或者应该是),您可以尝试更改:

代码语言:javascript
复制
navigator.geolocation

代码语言:javascript
复制
window.navigator.geolocation

这是因为大多数评估调用都是在干净的上下文中运行的,或者我认为是这样的。如果这样做不起作用,那么纳瓦利亚也许就能做到,因为这是一种相当“裸金属”的说法。

祝你好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45600819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档