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以上の値を設定する必要がある。