ChromeのCDPコマンド経由で位置情報を設定する方法と注意点

Google Chromeもしくはその他のChromium派生系ブラウザをSeleniumから操作する際、CDPコマンドによって位置情報を設定することができる。

Seleniumのバージョンは最新の4.0.0を使用。

// WebDriverを取得
ChromeDriver driver = new ChromeDriver(chromeOptions);

// DevToolsを取得
DevTools devTools = driver.getDevTools();
devTools.createSession();

// 位置情報を設定
devTools.send(Browser.grantPermissions(
  Collections.singletonList(PermissionType.GEOLOCATION),
  Optional.of("https://www.google.co.jp/"),
  Optional.empty()));
devTools.send(Emulation.setGeolocationOverride(
  Optional.of(latitude),
  Optional.of(longitude),
  Optional.of(100)));

この際、Emulation.setGeolocationOverrideメソッドに渡す第3引数(accuracy)の値に注意。
0を設定した場合正しく位置情報が設定されないため、1以上の値を設定する必要がある。