Web上での単純作業を自動化するSeleniumの基本


Webサービスをブラウザ上でポチポチクリックするような単純作業は正直つらいと思います。
Seleniumを用いると、そのような作業を自動化することができます。
この記事では、Seleniumの基本的な使い方を紹介したいと思います。
具体的には
・事前準備
・ページの遷移
・テキストフィールドの入力
・ボタンのクリック
などです。
上記だけで完結する単純作業もあるのではないでしょうか。

環境はWindows、ブラウザはChromeを利用しています。

事前準備

下記からchromeのdriverをダウンロード。
https://sites.google.com/a/chromium.org/chromedriver/downloads

適当なフォルダに保存。

ページの表示

test.py
from selenium import webdriver

# 先ほどダウンロードしたchromedriverを読み込む
driver = webdriver.Chrome("./chromedriver.exe") 
driver.get("https://~~~")

すると、Chromeウインドウが自動で開き、ページに遷移します。

テキストボックスへの入力

Seleniumでは、HTML内の要素(element)をnameidで指定し、
それに対してアクションをする、という書き方になっているようです。

下記のemailの部分は、サイトごとによって異なります。
Chromeで右クリックし「検証」を押してソースコードを表示、
自分が操作したい要素のnameidをチェックしてください。
確認したところテキストボックスがemailという要素だったので、[email protected]というテキストを入力しています。

test.py
driver.find_element_by_name("email").send_keys("[email protected]")

また、入力フィールドをクリアするには、clear()があります。

test.py
driver.find_element_by_name("email").clear()

ボタンのクリック

idが"search_button"と設定されているボタンを選択し、それをクリックします。

test.py
driver.find_element_by_id("search_button").click()

これを用いることで、ダウンロードボタンのクリックも可能になります。

チェックボックスが選択されているかどうかの確認

test.py
driver.find_element_by_id("check_box").is_selected()

チェックボックスをクリックするとon/offが入れ替わるため、
既にチェックされてるかどうか確認したのちに、click()を実行する必要がある場合に用います。

ソースコードの表示

test.py
driver.page_source

取得したのちは、split()などで適当に分割して扱うのが良いかと思います。

その他

ブラウザでの操作は、実行してから応答があるまで時間がかかることがあるため、
コードとコードの間にtime.sleep(5)などを設け、
適当な時間あけるのが良いかと思います。

また、実行中のブラウザをいじっていると、予期しないエラーを吐くかもしれないため、触らないほうがいいと思います。

おわりに

単純作業は自動化して、他のことに時間使いたいですね。
このような自動化は、作業時間の変化によって、効果がわかりやすいのも達成感を感じやすくいいなと思いました。

誤りや、アドバイスなどがあったら教えていただけると嬉しいです。

なお、自分のブログの転載になります。