如何使用Selenium允许位置访问?

时间:2015-02-08 04:37:43

标签: java selenium selenium-webdriver

我正在尝试使用Java中的Selenium来获取用户的地理坐标,但使用IP地址并不够准确,所以我想使用这个网站http://www.whataremycoordinates.com/,但它不是& #39;工作,我猜这是因为你必须允许位置使用,所以无论如何我可以允许在Selenium中使用位置,或者可能以其他方式获得精确的地理坐标

2 个答案:

答案 0 :(得分:6)

通常,当网站想要获取此类数据时,浏览器会询问您是否要共享您的位置。问题出在一个弹出窗口内,无法控制 selenium。在这种情况下,您需要告诉浏览器,不要打开弹出窗口并允许同时共享您的位置,以便首先不会打开弹出窗口。

对于Firefox,您需要:

  • 打开网站
  • 允许分享您的位置(您还可以查看about:permissions以查看设置)
  • 保存当前的firefox个人资料
  • 启动firefox,FirefoxProfile指向您之前保存的个人资料

有关详细信息,请参阅:

答案 1 :(得分:0)

您可以在创建驱动程序时注入Firefox配置文件

硒3我正在使用,如果您使用硒2,则不需要firefoxOptions,您可以将配置文件直接传递到驱动程序中。

lat-log-json:How to enable geolocation permissions for a website in firefox profile using selenium webdriver

FirefoxOptions opt = getFirefoxOptions();
WebDriver webDriver = new FirefoxDriver(opt);


//method for fire fox profile//////////////////////////////////
     public static FirefoxProfile getFirefoxProfile() {

            ProfilesIni profileIni = new ProfilesIni();
            FirefoxProfile profile = profileIni.getProfile("webDriverProfile");

            System.out.println("profile is null : " + (profile == null));
            if (profile == null) {
                profile = new FirefoxProfile();
            }

            profile.setPreference("browser.download.folderList", 2);
            profile.setPreference("browser.download.dir", "download/path");
            profile.setPreference(
                    "browser.helperApps.neverAsk.saveToDisk",
                    "application/pdf,application/octet-stream,"
                            + "application/download,text/html,application/xhtml+xml");
            profile.setPreference("pdfjs.disabled", true);
    //      profile.setPreference("dom.webnotifications.enabled", true);
            profile.setPreference("geo.enabled", true);
            profile.setPreference("geo.provider.use_corelocation", true);
            profile.setPreference("geo.prompt.testing", true);
            profile.setPreference("geo.prompt.testing.allow", true);
            profile.setPreference("geo.wifi.uri", "path-to-loglatjson\\geo-location-ITPL.json");
            // profile.setPreference("browser.helperApps.neverAsk.openFile",
            // "application/pdf");
            // profile.setPreference("browser.helperApps.alwaysAsk.force", false);
            /*
             * profile.setPreference("browser.download.manager.alertOnEXEOpen",
             * false);
             * profile.setPreference("browser.download.manager.focusWhenStarting",
             * false); profile.setPreference("browser.download.manager.useWindow",
             * false);
             * profile.setPreference("browser.download.manager.showAlertOnComplete",
             * false);
             * profile.setPreference("browser.download.manager.closeWhenDone",
             * false);
             */
            return profile;
        }