Chrome的自定义个人资料

环境:Mac OS X 10.8.3,Ruby 2.0.0p0,selenium-webdriver 2.32.1,ChromeDriver 26.0.1383.0。

我想更改默认的浏览器语言。 我正在测试网站是否正确检测到浏览器语言并以该语言显示页面。

我能够将Firefox语言设置为德语:

require "selenium-webdriver"

profile = Selenium::WebDriver::Firefox::Profile.new 
profile["intl.accept_languages"] = "de"

caps = Selenium::WebDriver::Remote::Capabilities.firefox(firefox_profile: profile) 
caps.platform = "Linux" 
caps.version = 20

driver = Selenium::WebDriver.for( 
:remote, 
url: "http://USERNAME:ACCESS-KEY@ondemand.saucelabs.com:80/wd/hub", 
desired_capabilities: caps)

driver.navigate.to "http://sandbox.translatewiki.net/"

我想用Chrome(以及其他浏览器,如果可能的话)也这样做。

我尝试了几种尝试在Chrome中以德文打开页面的内容,但每次页面都以英文显示,而不是以德文显示。

require "selenium-webdriver"

profile = Selenium::WebDriver::Chrome::Profile.new 
profile["intl.accept_languages"] = "de"

caps = Selenium::WebDriver::Remote::Capabilities.chrome(firefox_profile: profile) 
caps.platform = "Linux" 
caps.version = ""

driver = Selenium::WebDriver.for( 
:remote, 
url: "http://USERNAME:ACCESS-KEY@ondemand.saucelabs.com:80/wd/hub", 
desired_capabilities: caps)

driver.navigate.to "http://sandbox.translatewiki.net/"

如果我将firefox_profile: profile更改为profile: profilechrome_profile: profile ,则每次都会以英文(而不是德文)打开页面。

据我在API文档中看到的,只有:firefox_profile被支持。

我可以在本地机器上完成,但在使用Sauce Labs时无法完成。


这应该工作:

require "selenium-webdriver"

profile = Selenium::WebDriver::Chrome::Profile.new 
profile["intl.accept_languages"] = "de"

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  platform: "Linux", 
  version: "", 
  'chrome.profile' => profile.as_json['zip']
)

Selenium::WebDriver.for(:remote, 
  url: "http://...@ondemand.saucelabs.com:80/wd/hub", 
  desired_capabilities: caps
)

哇,SauceLabs + Chrome + Selenium + Ruby的文档非常不一致,有时会相互矛盾。 不幸的是,我没有SauceLabs帐户来测试,所以我只能给你提供建议。

本文档指出ChromeDriver不支持自定义配置文件是已知问题。 这篇文章展示了如何为Chrome设置一个自定义配置文件。 去搞清楚。

为这个问题设置配置文件或默认语言不是标准WebDriver有线协议的一部分,因此您可能会运气不好。

一种解决方法是将您的浏览器设置为使用代理,并在代理中添加/替换代理中的Accept-Language头。

尽管如此,仔细查看Selenium Ruby代码,看起来这篇文章可能会出现一些问题,所以请尝试一下:

profile = Selenium::WebDriver::Chrome::Profile.new
profile["intl.accept_languages"] = "de"

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chromeOptions'] = { 'profile'    => profile.as_json['zip'] }
driver = Selenium::WebDriver.for( 
:remote, 
url: "http://USERNAME:ACCESS-KEY@ondemand.saucelabs.com:80/wd/hub", 
desired_capabilities: caps)

driver.navigate.to "http://sandbox.translatewiki.net/"

编辑:它看起来像--lang-开关没有做你想做的,所以忽略以下内容。 我将它留在这里作为后代。

这可能会起作用(忘记配置文件,使用命令行开关):

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chrome.switches'] = ['--lang-de']

我在本地机器上看到德语翻译使用:

profile = Selenium::WebDriver::Chrome::Profile.new
profile["intl.accept_languages"] = "de"
@driver = Selenium::WebDriver.for :chrome, :profile => profile  
@target = 'http://sandbox.translatewiki.net/'

osx:10.7.5

红宝石1.9.3p0(2011-10-30修订版33570)[x86_64-darwin11.4.2]

链接地址: http://www.djcxy.com/p/71195.html

上一篇: Custom profile for Chrome

下一篇: How to repeat audio track if video duration in longer than audio duration