我正在编写一个使用Selenium打开地图的测试。
问题是地图是在我当前的位置打开的-但是我想在其他位置(不同的国家)打开它。

我已通过使用Chrome devtools以编程方式转到Sensors来调整位置。
如何在Java中实现相同的行为?
我尝试了以下代码,但未成功。

JSONObject jsonObject = new JSONObject();
jsonObject.put("pro`enter code here`file.default_content_settings.geolocation", 2);
options.setExperimentalOption("prefs", jsonObject);
driver = new ChromeDriver(options);
((JavascriptExecutor)driver).executeScript("window.navigator.geolocation.getCurrentPosition = function(success){ var position = {'coords' : { 'latitude': '55.751244', 'longitude': '37.618423'}}; success(position);}");

最佳答案

要使用Chrome覆盖地理位置,请执行以下操作:

Map prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.geolocation", 1); // 1:allow 2:block

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);

ChromeDriver driver = new ChromeDriver(options);

((LocationContext)driver).setLocation(new Location(37.774929, -122.419416, 0));
driver.get("https://html5demos.com/geo/");

关于java - 如何通过代码设置地理位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47396547/

10-11 22:29
查看更多