7

環境: 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 docsで確認できる限り、サポートされているのはのみ:firefox_profileです。

ローカル マシンでは実行できましたが、Sauce Labs を使用している場合は実行できませんでした。

4

4 に答える 4

1

うわー、SauceLabs + Chrome + Selenium + Ruby のドキュメントは非常に一貫性がなく、矛盾していることもあります。残念ながら、テストするための SauceLabs アカウントを持っていないので、私にできることは提案をすることだけです。

このドキュメントでは、ChromeDriver がカスタム プロファイルをサポートしていないことが既知の問題であると述べています。 この投稿では、Chrome のカスタム プロファイルを設定する方法を示します。図に行きます。

そのためのプロファイルまたはデフォルト言語の設定は、標準のWebDriver ワイヤ プロトコルの一部ではないため、うまくいかない場合があります。

回避策の 1 つは、プロキシを使用するようにブラウザを設定し、プロキシで 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/"

EDIT:--lang-スイッチがあなたが望むことをしないように見えるので、以下を無視してください。後世のためにここに残します。

これでうまくいくかもしれません (プロファイルは忘れて、コマンド ライン スイッチを使用してください):

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chrome.switches'] = ['--lang-de']
于 2013-05-04T08:48:42.493 に答える
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"
于 2014-02-21T11:32:13.723 に答える