环境: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: profile
或chrome_profile: profile
,则每次都会以英文(而不是德语)打开页面。
据我所知API docs,仅支持:firefox_profile
。
我能够在local machine上完成,但在使用Sauce Labs时却无法做到。
答案 0 :(得分:3)
这应该有效:
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
)
答案 1 :(得分:1)
This documentation表示ChromeDriver不支持自定义配置文件是一个众所周知的问题。 This post显示了如何为Chrome设置自定义配置文件。去图。
为此事项设置个人资料或默认语言不属于标准WebDriver wire protocol的一部分,因此您可能会失去运气。
一种解决方法是将浏览器设置为使用代理,并在代理中添加/替换代理中的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']
答案 2 :(得分:0)
我在本地机器上看到德语翻译使用:
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
ruby 1.9.3p0(2011-10-30修订版33570)[x86_64-darwin11.4.2]
答案 3 :(得分:0)
现在你可以使用这个方法
def launch_browser options={}
language = options.fetch(:language, "en_US")
url = options.fetch(:url, "www.google.com")
prefs = {
:intl => {
:accept_languages => language
}
}
browser = Watir::Browser.new :chrome, :prefs => prefs
browser.goto url
end
然后你只需要打电话
launch_browser :language => "de"