Selenium Webdriver - 優先ブラウザ言語を設定 DE
概要
Selenium Webdriver と Ruby を使用してヘッドレス Chrome 内で優先 (受け入れられる言語) を設定する際に問題が発生します。次の WebDriver 設定を使用します。
Selenium::WebDriver::Chrome.driver_path = @config[<path to the Chrome Driver>]
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-translate')
options.add_argument("--lang=de")
次に、ドライバーは次のように初期化されます。
@selenium_driver = Selenium::WebDriver.for :chrome, options: options
すべて正常に動作しますが、一部のページでは、ドイツ語のページ URL (page.de など) に移動しても Chrome が英語のコンテンツを返します。このような場合、Chrome ドライバーは page.de/en への内部転送により英語のコンテンツを返します。クエリした URL に en パスを指定しません。
Webdriver 設定を使用して言語を設定しようとしました。
options.add_preference('accept_languages', 'de')
add_argument の代わりに使用しますが、動作は何も変わりません。
Ruby 内の Selenium Webdriver によって制御されるヘッドレス Chrome に、定義された言語でページ コンテンツを要求させる方法、または最適ではありませんが回避策として役立つ可能性がある転送を停止する方法を誰かが考えていますか?
解決策
私にとって効果的な解決策を見つけました。多くの場合、問題は画面の前にあり、十分に正確に動作しません ;-)
使用する代わりに
options.add_argument("--lang=de")
使わなければなりません
options.add_argument("--lang=de-DE")
IETF 言語タグを使用すると、最初に投稿したコードは期待どおりに機能します。