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));