これは何
seleniumを使った開発する際に少々詰まるところがあったのでメモ
概要
ChromeDriverはこれまで以下ページで配布されていた。
https://sites.google.com/chromium.org/driver/downloads
が、バージョン115 以降はこちらから取得することになった。(リンクは上記ページの上部に記載あり)
https://googlechromelabs.github.io/chrome-for-testing/
ChromeDriverを実装で指定しなかった場合
端末でインストールしているChromeが呼び出されると思う。
コード例
自分の場合のコード例です
Python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# ChromeDriverの初期設定を行う(optionには一部不要な設定もあると思います)
def setup_driver(driver_path):
# このdriver_pathは、先ほどのリンクからダウンロードしたchromedriverのバイナリのパス。
service = Service(executable_path=driver_path)
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument("--disable-setuid-sandbox")
# headlessで実行する際はuser-agentの設定が必要
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15'
options.add_argument('--user-agent=%s' % user_agent)
# headlessにすると開発時は動作が見づらいので一旦外しておくのが個人的におすすめ
# options.add_argument('--headless')
# 開発時、動作確認のために実行するたびに画面上にウィンドウが現れるが、都合のいい座標を指定しておくと便利
options.add_argument('--window-size=640,640')
options.add_argument('--window-position=1400,100')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu')
return webdriver.Chrome(service=service, options=options)
driver = setup_driver(os.environ.get('CHROME_DRIVER_PATH'))
# twitterログイン
driver.get('https://twitter.com/login')
# ページが読み込まれるまで待機
# ref. https://kurozumi.github.io/selenium-python/waits.html
email_elm = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//input[@name='text']")))
email_elm.send_keys(email)
email_elm.send_keys(Keys.RETURN)
...
補記
ChromeDriverの実態はよく解っていない。。(Chromeとは別物?)
別の機会に確認したい。
参考
- https://gammasoft.jp/support/chrome-webdriver-for-ver115-and-newer/