NightmareJSを使用してページをロードし、ボタンをクリックしてから、スクリーンショットをテストしてテストします。ボタンのクリックハンドラがジオロケーションを要求します。これは私がテストしているものの一部です。ユーザーがジオロケーションを許可している場合はページを特定の方法で表示し、拒否する場合は別の方法でページを表示します。NightmareJSでモック組み込みオブジェクトをモック
ナイトメアでは、許可または拒否するアクセス許可のプロンプトを傍受する方法が公開されていません。いくつかの研究の後、私は、エレクトロンがこの許可を「与えられた」ものにハードコードしているので、それが拒否されるように設定する方法さえないかもしれないことを学びました。
私がしたいのは、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オブジェクトは変更されないようです。この目標を達成するための他の方法がありますか?両方のプロジェクトで、私はこれが可能である(またはあるべき)だと思う
window.navigatorを使用しているようです!ありがとう! – arkanciscan