7

Окружающая среда: Mac OS X 10.8.3, Ruby 2.0.0p0, selenium-webdriver 2.32.1, ChromeDriver 26.0.1383.0.Пользовательский профиль для Chrome

Я хочу изменить язык браузера по умолчанию. Я тестирую, правильно ли сайт правильно определяет язык браузера и отображает страницы на этом языке.

Я был в состоянии установить 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:[email protected]: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:[email protected]: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

Итак, если вы передадите: firefox_profile в Chrome caps, это работает или нет? – p0deje

+0

@ p0deje: Это не работает. Что бы я ни делал, Chrome всегда открывает страницу на английском, а не на немецком языке. –

+1

Вы уверены, что если вы зададите свой язык по умолчанию в своем браузере, страница загрузится правильно? – fotanus

ответ

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://[email protected]:80/wd/hub", 
    desired_capabilities: caps 
) 
+0

Я знал, что Яри единственный, кто может ответить на этот вопрос! – p0deje

+0

Лучшая потраченная 500 репутация когда-либо. :) –

+0

Проверено ли это на работу? Кажется, так близко к моему предлагаемому решению, что это меня удивило бы, если бы кто-то работал, а другой не сделал. –

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

рубин 1.9.3p0 (2011-10-30 ревизия 33570) [x86_64-darwin11. 4.2]

+0

Богатый, как говорит последнее предложение в моем вопросе, я могу сделать это на локальной машине (обратите внимание на ссылку на мой пост в блоге), но не при использовании Sauce Labs. –

+1

Я получаю «непризнанный хром вариант: профиль», когда я это делаю ... –

1

Ничего себе, документация для SauceLabs + Chrome + Selenium + Ruby очень противоречива, а иногда и противоречива. К сожалению, у меня нет учетной записи SauceLabs для тестирования, поэтому все, что я могу сделать, это дать вам предложения.

This documentation говорит, что известно, что ChromeDriver не поддерживает настраиваемый профиль. This post показывает, как настроить пользовательский профиль для Chrome. Идите фигуру.

Настройка профиля или языка по умолчанию, если это не относится к стандарту WebDriver wire protocol, так что вам может быть не повезло.

Одним из способов решения проблемы было бы настроить браузер на использование прокси-сервера, а в прокси-сервере - добавлять/заменять заголовок Accept-Language в прокси-сервере.

Тем не менее, глядя через код Селен Рубин, похоже, что пост может быть на что-то, чтобы дать это попробовать:

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:[email protected]:80/wd/hub", 
desired_capabilities: caps) 

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

EDIT: Похоже, переключатель --lang- не делает то, что вы хотите, поэтому игнорируйте следующее. Я оставляю его здесь для потомков.

Это может сработать (забыть о профиле, используйте ключи командной строки):

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

Sauce Labs имеет бесплатные учетные записи ... :) –

+0

Я не смог найти '-lang-de' переключатель по адресу http: //src.chromium .org/svn/trunk/src/chrome/common/chrome_switches.cc Где вы его нашли? –

+0

Я нашел переключатель '--lang' + код страны [здесь] (http://peter.sh/experiments/chromium-command-line-switches/) и [здесь] (http://src.chromium.org /svn/trunk/src/ui/base/ui_base_switches.cc). Возможно, это не сработает, но это возможно. Вы пробовали связаться с SauceLabs об этом? На самом деле у них должен быть ответ для вас. –

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" 

 Смежные вопросы

  • Нет связанных вопросов^_^