2017-11-20 12 views
2

私はSeleniumを使って地図を開くテストを書いています。 問題はマップが現在の場所で開かれていることですが、別の場所(別の国)で開こうとしています。コードで地理位置を設定する方法

私は、Chrome devtoolsを使用してプログラム的にSensorに行くことで位置を調整しました。 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);}"); 

答えて

0

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/"); 
+0

ありがとうございます!できます! – moriyasamun

0

は、与えられた場所での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); 
} 

注:ここセレンはタイプセレの変数でありますクロムとジオロケーションを上書きする方法openGoogleMapを(持っているニウム

関連する問題