如何通过代码设置地理位置
How to set the geo location through code
我正在编写一个使用 Selenium
打开地图的测试。
问题是地图是在我当前的位置打开的——但是我想在不同的位置(不同的国家)打开它。
我已经使用 Chrome 开发工具以编程方式转到传感器来调整位置。
如何在 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<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/");
我正在编写一个使用 Selenium
打开地图的测试。
问题是地图是在我当前的位置打开的——但是我想在不同的位置(不同的国家)打开它。
我已经使用 Chrome 开发工具以编程方式转到传感器来调整位置。
如何在 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<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/");