2017-08-09 25 views
1

我想用NightmareJS加載一個頁面,點擊一個按鈕,然後拍一個截圖來測試。按鈕上的點擊處理程序請求地理位置。這是我測試的一部分。如果用戶授予地理位置權限,我希望頁面以某種方式顯示,如果他們拒絕,我希望以其他方式顯示。用NightmareJS模擬內置對象

問題是,夢魘不公開一種方法讓我攔截權限提示接受或拒絕它。經過一番研究後,我瞭解到,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對象不會改變。有沒有其他方法可以實現這個目標?

回答

1

我認爲這是可能的(或應該)在這兩個項目中,你可以嘗試改變:

navigator.geolocation 

window.navigator.geolocation 

這是因爲大多數評估調用在一個乾淨的環境中運行,或者我想。如果這不起作用,那麼Navalia可能可以做到這一點,因爲它是相當「純粹」的說話。

祝你好運!

+0

使用window.navigator似乎工作!謝謝! – arkanciscan