「Webブラウザ経由のGUIしか設定手段がない」MWの構築を自動化できないかと模索していたときに、検索しても意外とすぐ出てこなかったのでメモ。
$ pip install selenium
$ brew install chromedriver
sample.py
# -*- coding: utf-8 -*-
from __future__ import division, print_function, absolute_import, unicode_literals
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
options = webdriver.ChromeOptions()
options.add_argument('--incognito') # secret mode
options.add_experimental_option('prefs', {'intl.accept_languages': 'en_US'}) # locale=en_US
# use local driver
driver = webdriver.Chrome(chrome_options=options)
## use remote driver
# driver = webdriver.Remote(
# command_executor='http://127.0.0.1:4444/wd/hub',
# desired_capabilities=options.to_capabilities())
driver.get("https://www.debian.org/")
assert "Debian" in driver.title
elem = driver.find_element_by_name("P")
elem.clear()
elem.send_keys("debi_fujin")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()
実行するとこんな感じになります。
$ python sample.py
しょうもないハマりどころとしては
- www.google.com 等、接続元のIPアドレスを見て言語を切り替えているページには通用しない(当たり前ですね…)
- selenium-serverのDockerイメージには日本語フォント等が入ってない
あたりです。
参考: 【Selenium】python + ChromeDriver で Accept-Language ヘッダを設定する方法 - miyajan blog