【Selenium】python + ChromeDriver で Accept-Language ヘッダを設定する方法
多言語対応をしているサービスのSeleniumテストを書いていると、Accept-Languageヘッダを書き換えたいことがたまにあります。
python + ChromeDriverの構成でこれをやろうとしてハマったので、記事にしておきます。
先に回答を書くと、次のように書けば大丈夫です。
from selenium.webdriver import Chrome, ChromeOptions, Remote # ChromeOptionsでAccept-Languageヘッダを設定できる options = ChromeOptions() options.add_experimental_option('prefs', {'intl.accept_languages': 'ja'}) # ローカルの場合 executable_path = '/path/to/chromedriver' driver = Chrome(executable_path=executable_path, desired_capabilities=options.to_capabilities()) driver.get('https://www.google.co.jp') driver.execute_script('return window.navigator.languages') # [u'ja'] driver.quit() # RemoteDriverの場合も同様 driver = Remote(command_executor='http://remote-driver-host:4444/wd/hub', desired_capabilities=options.to_capabilities()) driver.get('https://www.google.co.jp') driver.execute_script('return window.navigator.languages') # [u'ja'] driver.quit()
以下のStackOverflowの記事からどうにか回答に辿り着きました。 stackoverflow.com
add_experimental_optionを使うのはあくまでも回避策っぽいので、将来的には変わるかもしれません。