Webテストツールとして有名な「Selenium」を使用して、Webブラウザ操作の自動化を行う手順を紹介します。
「Python」と組み合わせることでWebスクレイピングツールしても活用することができます。
環境構築が必要なため初心者には少々ハードルが高いですが、分かりやすいように紹介します。
なお今回は「Google Chrome」を使用したWebブラウザ操作の自動化を行っていきます。
Seleniumのインストール
まずはSeleniumのインストールを行います。
「pip」を使用してインストールします。
pip install selenium
PyCharmを使用している場合は下の記事を参考にインストールしてみてください。
これでSeleniumのインストールは完了です。
ドライバーの入手とインストール
次にドライバーの入手とインストールをします。
今回は「GoogleChrome用のドライバー」のダウンロード方法を紹介します。
「ダウンロードサイト:ChromeDriver – WebDriver for Chrome」にアクセスします。
「ChromeDriver」を選択しましょう。
Latest Releseの「ChromeDriver」を選択します。
各OSに合わせたドライバーをダウンロードしましょう。
**Windowsは64Bit版だとしても、「chromedriver_win32.zip」を利用できます。
**下がメジャーブラウザのドライバーのダウンロードサイトになります。
- GoogleChrome:https://sites.google.com/a/chromium.org/chromedriver/
- Firefox:https://github.com/mozilla/geckodriver/
- Microsoft Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
- Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
- Opera:https://github.com/operasoftware/operachromiumdriver/releases
ダウンロードしたメディアをOS上の所定の場所に配置します。
今回はメディアを下に配置します。
C:\webdriver\chromedriver.exe
Webブラウザの自動操作
今回のWebブラウザでの自動操作のシナリオは、 「Googleで”yahoo”と検索してみる」 にしてみます。
操作する要素をWebブラウザで特定する
初めにGoogleChromeでどのフィールドに”yahoo”と入力させるか確認する必要があります。
まずはGoogleChromeで「https://google.co.jp」で開きましょう。
次にWindowsでは「F12」、Macでは「Control + Option + I」で「検証モード」を開きます。
起動後の赤枠を選択すると、クリックで要素を特定することができます。
入力フォームをクリックすると、検証モード入力フォームのIDを特定できます。
Googleの検索フォームのID「lst-ib」ということが分かりました。
下に全体の流れを載せておきましたので参考にしてください。
Webブラウザ自動操作のコーディングしてみる
まずは「selenium」からWebドライバーとキーボード入力のライブラリをインポートします。
下のimport方法は丸暗記でOKです。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
次にWebドライバーを実行してオブジェクトを生成します。
そして、オブジェクト内のメソッドで対象のURLを開きます。
webdriver.Chrome(executable_path=<ドライバーフルパス>)
メソッドで、
上で指定したドライバーを設定しましょう。
get(<URL>)
メソッドで、URLのWebサイトを開くことが出来ます。
driver = webdriver.Chrome(executable_path=C:\\webdriver\\chromedriver.exe)
driver.get(https://www.google.co.jp/)
最後に開いたサイトの要素に対してアクションを設定します。
今回は、「Formに”yahoo”と入力してEnterで検索」させてます。
find_element_by_id(<ID>)
メソッドでFrom要素のIDを選択します。
send_keys(<キー操作>)
メソッドでキー操作を実行します。
driver.find_element_by_id('lst-ib').send_keys("yahoo")
driver.find_element_by_id('lst-ib').send_keys(Keys.ENTER)
今回用意したサンプルコードは以下になります。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
if __name__ == '__main__':
driver = webdriver.Chrome(executable_path="C:\webdriver\chromedriver.exe")
driver.get("https://www.google.co.jp/")
driver.find_element_by_id('lst-ib').send_keys("yahoo")
driver.find_element_by_id('lst-ib').send_keys(Keys.ENTER)
上記のプログラムの実行結果が下になります。
その他「selenium」の様々な使い方は今後紹介していきます。
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミングposted with ヨメレバ
Al Sweigart オライリージャパン 2017-06-03