概觀

當您的網站或網路應用程式根據存取位置而變更時,針對所有這些位置測試您的網站就變得非常重要。由於 Selenium 4 中現在提供Chrome DevTools 協定支援,Nightwatch 支援在測試執行期間使用一個指令模擬瀏覽器的地理位置。

這可讓您在從單一位置進行測試時,存取並測試在不同位置提供的不同版本網站。

此指令僅適用於基於 Chromium 的瀏覽器,例如 Google Chrome 和 Microsoft Egde。

模擬地理位置

模擬瀏覽器的地理位置可讓您覆寫瀏覽器傳送至您網站的位置,以便您的網站可以使用預定在該位置提供的版本回應。

您只需要在導覽至您的網站之前使用所需參數呼叫 browser.setGeolocation() 指令,就會將預定給所要求位置的網站版本傳回給您。

setGeolocation() 接受物件作為其第一個引數。物件的規格如下

類型 預設值 描述
latitude 數字 要設定的地理位置的緯度。
longitude 數字 要設定的地理位置的經度。
accuracy
選用
數字 100 模擬地理位置時的預期準確度。

範例

tests/mock-geolocation.js
describe('mock geolocation', function() {
  it('sets the geolocation to Tokyo, Japan', () => {
    browser
      .setGeolocation({
        latitude: 35.689487,
        longitude: 139.691706,
        accuracy: 100
      })
      .navigateTo('https://www.gps-coordinates.net/my-location')
      .pause(3000);
  });
});

重設地理位置

在覆寫瀏覽器的地理位置之後,如果您現在想要在同一個測試執行期間將瀏覽器的地理位置重設回原始位置,您可以使用 browser.setGeolocation() 指令再次執行此動作,但這次不使用任何引數。

範例

tests/mock-and-reset-geolocation.js
describe('mock and reset geolocation', function() {
  it('sets the geolocation to Tokyo, Japan and then resets it', () => {
    browser
      .setGeolocation({
        latitude: 35.689487,
        longitude: 139.691706,
        accuracy: 100
      })  // sets the geolocation to Tokyo, Japan
      .navigateTo('https://www.gps-coordinates.net/my-location')
      .pause(3000)
      .setGeolocation()  // resets the geolocation
      .navigateTo('https://www.gps-coordinates.net/my-location')
      .pause(3000);
  });
});