Selenium Grid 2 - Chromedriver does not start a new profile on a new run

大城市里の小女人 提交于 2020-01-03 05:26:22

问题


While testing a website on Chrome using selenium webdriver (chromedriver) with ruby and selenium grid 2, I manually clicked on Allow to track my location.

Since then every new run starts off with the Chrome browser tracking my location and not asking for permission anymore.

In my understanding that should not happen, as Selenium should create a new profile and not remember any user interactions in the previous run.

I have also tried to open the Chrome Browser as an admin (manually) and change the settings to forget any permissions set for location services for the site being tested. But that has not helped either.

I have also tried to restart the grid but that has not helped either.

Does anyone know how do I make the browser forget my permission?

UPDATE

Code to start the driver

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

回答1:


Try this..

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)

Also verify that you have Ask me when a site tries to track my physical location (recommended) option checked, under Settings -> Advanced Settings -> Privacy -> Content Settings -> Location.

Update:

Another try..

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)



回答2:


Try this for a local WebDriver fix:

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

To do so remotely, I think it would probably look something like this:

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

Please see the RubyBindings documentation for information on using switches https://code.google.com/p/selenium/wiki/RubyBindings#Chrome

You can view a list of Chrome switches here: http://peter.sh/experiments/chromium-command-line-switches/

Update

Looks like Chromedriver needs to turn testing defaults off first before some settings (like geolocation tracking) can be set (this according to a revision of the ChromeDriver Capabilities wiki found here: http://wiki.chromedriver.googlecode.com/git-history/c790ec6b0b32a31a8797a0fa97b7f4dccb4f5da4/CapabilitiesAndSwitches.wiki ).

I updated the code above to include the config to set to turn the testing defaults off (see http://code.google.com/p/chromium/issues/detail?id=113884 and http://code.google.com/p/selenium/issues/detail?id=4622 ).

Please ensure that you are using selenium-webdriver 2.26.0 or greater.



来源:https://stackoverflow.com/questions/16025537/selenium-grid-2-chromedriver-does-not-start-a-new-profile-on-a-new-run

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!