如何通过代码

时间:2017-11-20 16:22:03

标签: java google-chrome selenium geolocation

我正在编写一个使用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);}");

2 个答案:

答案 0 :(得分:1)

使用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/");

答案 1 :(得分:0)

以下是使用Selenium在指定位置打开Goog​​le地图的示例:

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

相关问题