今回はseleniumを使ってchromeを操作していこうと思います。
目次 非表示
Seleniumとは
seleniumはwebブラウザの操作を自動化するためのフレームワークです。
webブラウザで行うクリック操作や、キーボード入力などをプログラム上から操作することができます。
もともとはwebアプリケーションのUIテストを自動化するために開発されましたが、テスト以外にもタスクの自動化などにも利用されています。
準備
まず、動作環境は以下の条件で行っています。
次に必要なものをインストールしていきます。
seleniumのインストール
seleniumのインストールは以下のコマンドになります。
pip install selenium
ChromeDriverのインストール
ChromeDriverは自分のChromeのバージョンに合ったものをダウンロードする必要があります。
バージョンの確認方法は
Chromeの設定→Chromeについて
で調べることができます。
バイナリを直接ダウンロードする場合
OS、Chromeのバージョンに合ったChromeDriverをhttp://chromedriver.chromium.org/downloadsからダウンロードします。
ダウンロードしたZIPフォルダーを解凍し、実行ファイルをPATHの通った場所にコピーするか、環境設定でPATHを通します。
コマンドラインから chromedriver
を実行すれば Starting ChromeDriver 2.42.591088...
のようなメッセージが表示されます。実際にはコマンドラインから実行するわけではないですが、これで PATH が通っていることを確認できます。
環境変数の PATH に追加せず、プログラム中でパス指定することも可能です。
pipでインストールする方法
Python では chromedriver-binary
という、 WebDriver のバイナリのダウンロードとパスの設定をやってくれる便利なライブラリを公開してくれている方がいます。
Chrome のバージョンと対応した WebDriver をインストールする必要があるので、 pip で以下のようにメジャーバージョンのみ指定して WebDriver をインストールします。
pip install chromedriver-binary==89.*
環境変数等でパスを通す必要はなく、プログラム中で import chromedriver_binary
のようにインポートすればパスが通ります。
バイナリのフルパスを表示してくれる chromedriver-path
というコマンドもインストールされるので、これを利用してコマンドラインで PATH に加えておくこともできます。
動作確認
ここではchromedriver-binaryを利用したプログラムを書いていきます。
from selenium import webdriver
import chromedriver_binary
driver = webdriver.Chrome()
driver.get('http://www.google.com')
これでchromeが起動し、googleのホームページが表示されれば成功です。
基本的な使い方
ブラウザ操作
・webサイトの表示
driver.get('http://www.google.com')
・現在のURLを取得
driver.current_url
・前のページに戻る
driver.back()
・次のページに進む
driver.forward()
・現在のページを更新
driver.refresh()
・現在のページタイトルを取得
driver.title
・ブラウザを終了する
driver.quit()
・文字列の入力
テキストフィールドやテキストエリアに文字列を入力するには send_keys()
を使います。Keys
を使うには from selenium.webdriver.common.keys import Keys
しておきます。
element.send_keys("文字列")
element.send_keys(Keys.RETURN) #特殊キー入力
element.send_keys("文字列", Keys.RETURN) #続けて書く場合
要素の取得
seleniumでも要素を取得することが可能です。
メソッド | 説明 |
---|---|
find_element_by_id(id) | id属性で要素を検索する |
find_element_by_name(name) | name属性で要素を検索する |
find_element_by_class_name(name) | class属性で要素を検索する |
find_element_by_tag_name(name) | タグ名で要素を検索する |
find_element_by_xpath(xpath) | XPathで要素を検索する |
find_element_by_css_selector(css_selector) | CSSセレクタで要素を検索する |
find_element_by_link_text(link_text) | リンクテキストで要素を検索する |
find_element_by_partial_link_text(link_text) | リンクテキストの部分一致で要素を検索する |
参考ページ
https://selenium-python.readthedocs.io/navigating.html#filling-in-forms
https://www.selenium.dev/documentation/ja/webdriver/