【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を使うのはあくまでも回避策っぽいので、将来的には変わるかもしれません。