Python3 + Selenium + Headless Chromeでブラウザを自動操作する(超入門編)
はじめに
最近、WebアプリケーションのE2Eテストやスクレイピングなどに興味があるので 、
seleniumを使ってブラウザの自動操作をできるよう環境を作ってみました。
同じような記事はたくさんありますが、備忘録も兼ねて書いておきます。
環境は以下の通りです。 MacからVagrant上のCentOS7にSSHで接続し、そちらからコマンドを実行しています。
ホストOS | macOS Sierra バージョン 10.12.6 |
---|---|
ゲストOS | CentOS Linux release 7.4.1708 (Core) |
Python | 3.6.2 |
Chrome | 66.0.3355.0 dev |
chromedriver | 2.3.6 |
IDE | PyCharm 2017.3.1 Professional Edition |
Seleniumインストール
# pip intall selenium
これでOKです。
Google ChromeをCentOS7にインストール
他の記事だとこれをやってなくてもできてるっぽかったのですが、 自分の環境ではこれをやらないと動きませんでした。
# yum install google-chrome # google-chrome --version Google Chrome 66.0.3355.0 dev
ChromeDriverインストール
ChromeDriver - WebDriver for Chromeからダウンロードします。 今回はGoogle Chrome 66なので、Supports Chrome v64-66と書いてあるChromeDriver 2.36をダウンロードしました。
# wget http://chromedriver.storage.googleapis.com/2.36/chromedriver_linux64.zip # unzip chromedriver_linux64.zip # mv chromedriver /usr/local/bin
動かしてみる
Chromeを起動してGoogle検索し、検索結果を表示してついでにスクリーンショットを撮るプログラムを書いてみます。
検索してるもので趣味がダダ漏れになってるのは気にしないでください。
シロちゃんはいいぞ。
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options options = Options() # ヘッドレスモードを有効にする options.add_argument('--headless') # ChromeのWebDriverオブジェクトを作成する。 driver = webdriver.Chrome(chrome_options=options) driver.get('https://www.google.co.jp/') assert 'Google' in driver.title input_element = driver.find_element_by_name('q') input_element.send_keys('電脳少女シロ') input_element.send_keys(Keys.RETURN) driver.set_window_size(1280, 720) driver.save_screenshot('search_screen_shot.png') for a in driver.find_elements_by_css_selector('h3 > a'): print(a.text) print(a.get_attribute('href'))
実行すると、以下のように検索結果がターミナルに出力されます。
いい感じですね。
スクリーンショットもこんな感じで撮れます。
とりあえずこれでSeleniumデビューできたので、色々使ってみようと思います。