Java 如何通过代码设置地理位置

Java 如何通过代码设置地理位置,java,google-chrome,selenium,geolocation,Java,Google Chrome,Selenium,Geolocation,我正在编写一个测试,它使用Selenium打开一个映射。 问题是地图是在我当前的位置打开的,但是我想在不同的位置(不同的国家)打开它 我已经使用Chrome devtools通过编程方式转到传感器来调整位置。 如何在Java中实现相同的行为? 我尝试了以下代码,但没有成功 JSONObject jsonObject = new JSONObject(); jsonObject.put("pro`enter code here`file.default_content_settings.geolo

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

我已经使用Chrome devtools通过编程方式转到传感器来调整位置。 如何在
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);}");

下面是一个使用Selenium在给定位置打开Google地图的示例:

public void openGoogleMap(final String latitude, final String longitude, final int zoom) throws InterruptedException {
    // Optional, if not specified, WebDriver will search your path for chromedriver.
    System.setProperty("webdriver.chrome.driver", "/home/user/Apps/chromedriver");
    WebDriver driver = new ChromeDriver();
    driver.get("https://www.google.co.uk/maps/" + "@" + latitude + "," + longitude + "," + zoom + "z?hl=en");
    Thread.sleep(5000);  // Let the user actually see something!
    driver.quit();
}
下面是一个示例测试,演示了该方法的用法:

@Test
public void testOpenGoogleMap() throws InterruptedException {
    String latitude = "55.751244";
    String longitude = "37.618423";
    int zoom = 15;
    selenium.openGoogleMap(latitude, longitude, zoom);
}

注意:这里selenium是一个selenium类型的变量,它有方法openGoogleMap()

用Chrome覆盖地理位置:

Map prefs=new HashMap();
prefs.put(“profile.default_content_setting_values.geolocation”,1);//1:允许2:阻塞
ChromeOptions选项=新的ChromeOptions();
选项。设置实验选项(“prefs”,prefs);
ChromeDriver驱动程序=新的ChromeDriver(选项);
((LocationContext)驱动程序)。设置位置(新位置(37.774929,-122.419416,0));
驱动程序。获取(“https://html5demos.com/geo/");

我对appium进行了相同的尝试,但在我的应用程序中没有设置位置。我使用了Appium驱动程序,代码如下:driver.setLocation(新位置(10.79,78.70,1000));