TechPythonJapanese

[Python][Selenium] Headless Chrome での WebDriver 起動方法

[Python][Selenium]Headless ChromeでのWebDriver起動方法 Tech

Javascript を用いた動的サイトを対象とし、Selenium を動作させようとしたところ、簡単なところで躓いてしまったので、備忘までに以下に手順を残します。

Mac OS Big Sur 11.1
Python 3.8.3
ChromeDriver 89.0.4389.23

公式のサンプルコード

公式の Getting Started を参照すればよいのですが、Headless についての言及がされていないようでした。

import time
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

Headlessで起動するためのオプション

色々と調べたところ、以下の様にheadlessのオプション指定をすることで動作することがわかりました。

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)

最終的なサンプルコード

‘/usr/local/bin/chromedriver’ の部分は適宜環境に合わせて修正する必要があります。

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)

driver.get('http://www.google.com/')
# driverを使った何かしらの処理

driver.quit()

まとめ

  • Headless で起動するには、 driver に options.add_argument(‘–headless’) を追加
  • chromedriver の実行モジュールへのパスは、適宜実行環境に合わせる
Ads