代码之家  ›  专栏  ›  技术社区  ›  moriyasamun

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

  •  2
  • moriyasamun  · 技术社区  · 7 年前

    我正在编写一个测试,它使用 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);}");
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Florent B.    7 年前

    要使用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/");
    
        2
  •  -1
  •   Boris    7 年前

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

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

    注:此处 是类型的变量 哪个有方法 openGoogleMap()