Selenium Grid 2 - Chromedriver不会在新的运行中启动新的配置文件

时间:2013-04-15 22:10:29

标签: ruby selenium webdriver selenium-webdriver selenium-chromedriver

使用selenium webdriverchromedriver)与rubyselenium grid 2在Chrome上测试网站时,我手动点击了Allow来跟踪我的位置。< / p>

从那以后,每次新的游戏开始时,Chrome浏览器都会跟踪我的位置,而不再要求获得许可。

在我的理解中,不应该发生,因为Selenium应该创建一个新的配置文件,而不记得上一次运行中的任何用户交互。

我还尝试以管理员身份(手动)打开Chrome浏览器,并更改设置以忘记为正在测试的网站的位置服务设置的任何权限。但这也没有帮助。

我也尝试重新启动网格,但这也没有帮助。

有谁知道如何让浏览器忘记我的许可?

更新

启动驱动程序的代码

@driver = Selenium::WebDriver.for(:remote, :url => @sel_grid_url, :desired_capabilities => @browser)

2 个答案:

答案 0 :(得分:1)

试试这个..

profile = Selenium::WebDriver::Chrome::Profile.new

data = profile.as_json

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chromeOptions'] = {
  'profile'    => data['zip'],
  'extensions' => data['extensions']
}

driver = Selenium::WebDriver.for(:remote, :url => @sel_grid_url, :desired_capabilities => caps)

同时确认您已在Ask me when a site tries to track my physical location (recommended)下检查了Settings -> Advanced Settings -> Privacy -> Content Settings -> Location选项。

<强>更新

另一次尝试..

profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = "/path/to/dir"
profile['profile.managed_default_content_settings.geolocation'] = 2 #Try 1 and 0 as well


data = profile.as_json

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chromeOptions'] = {
  'profile'    => data['zip'],
  'extensions' => data['extensions']
}

driver = Selenium::WebDriver.for(:remote, :url => @sel_grid_url, :desired_capabilities => caps)

答案 1 :(得分:0)

尝试使用本地WebDriver修复:

@driver = Selenium::WebDriver.for(:chrome, :no_website_testing_defaults => true, :switches => %w[--disable-geolocation])

为了远程执行此操作,我认为它可能看起来像这样:

caps = Selenium::WebDriver::Remote::Capabilities.chrome(:no_website_testing_defaults => true, :switches => %w[--disable-geolocation])
@driver = Selenium::WebDriver.for(:remote, :desired_capabilities => caps)

有关使用开关https://code.google.com/p/selenium/wiki/RubyBindings#Chrome

的信息,请参阅RubyBindings文档

您可以在此处查看Chrome切换列表:http://peter.sh/experiments/chromium-command-line-switches/

<强>更新

看起来Chromedriver需要首先关闭测试默认设置,然后才能设置一些设置(如地理定位跟踪)(根据此处的ChromeDriver功能维基修订版本http://wiki.chromedriver.googlecode.com/git-history/c790ec6b0b32a31a8797a0fa97b7f4dccb4f5da4/CapabilitiesAndSwitches.wiki)。

我更新了上面的代码以包含配置设置为关闭测试默认值(请参阅http://code.google.com/p/chromium/issues/detail?id=113884http://code.google.com/p/selenium/issues/detail?id=4622)。

请确保您使用的是selenium-webdriver 2.26.0或更高版本。