1

我用谷歌搜索过,搜索过 SO,并查看了 Selenium Javadocs,但没有找到这个问题的答案。

当网站试图跟踪您的位置时,有什么方法可以使用 Selenium WebDriver 接受浏览器(Chrome、Firefox、IE)显示的那些“共享位置”弹出窗口?

另外,我正在用 Java 编写我的 Selenium 代码并使用 Selenium 客户端驱动程序。

我尝试运行 Selenium IDE(Firefox 插件)并记录我接受 Firefox 弹出的“共享位置”弹出窗口,但 Selenium IDE 中没有记录任何内容。

4

2 回答 2

1

如果弹出窗口是浏览器的一部分,那么答案是否定的。如果您想与第二个窗口(不是浏览器的一部分)中显示的内容进行交互,那么可以。应该有一个 .switch_to 方法。

尽管如果您可以让此页面记住您的设置,您可以在创建浏览器的新实例时加载配置文件。

在 Windows 中,您可以通过转到开始菜单并在此处键入“firefox.exe -p”在 Firefox 中创建配置文件,您可以创建一个新配置文件,您可以在其中选中“记住我复选框”。

至于在 Java + Selenium 中加载配置文件,我不确定您将如何执行此操作。我使用 Ruby + Selenium,这就是我的做法。

$driver = Selenium::WebDriver.for :firefox, :profile => "MyProfile"

希望这可以帮助

于 2012-12-19T19:43:31.870 回答
0

我已经在 Firefox 中找到了解决方案,但仍在使用 chrome。下面的代码应该有助于获取您在地图上的确切位置:

    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile myprofile = profile.getProfile("default");
    myprofile.setPreference("geo.prompt.testing", true);
    myprofile.setPreference("geo.prompt.testing.allow", true);
    myprofile.setPreference("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    capabilities.setCapability(FirefoxDriver.PROFILE,myprofile);

之后只需在驱动程序方法中传递 FirefoxProfile 实例,如下所示(对于上面的代码):

    driver = new FirefoxDriver(myprofile);

那应该没问题,写下你想要的所有其他东西并执行!

于 2017-08-12T13:27:06.447 回答