seleniumの基本操作

今回はseleniumを使ってchromeを操作していこうと思います。

Seleniumとは

seleniumはwebブラウザの操作を自動化するためのフレームワークです。
webブラウザで行うクリック操作や、キーボード入力などをプログラム上から操作することができます。

もともとはwebアプリケーションのUIテストを自動化するために開発されましたが、テスト以外にもタスクの自動化などにも利用されています。

準備

まず、動作環境は以下の条件で行っています。

動作環境
  • windows 10 Home
  • python 3.9.2

次に必要なものをインストールしていきます。

必要なもの
  • selenium
    WebDriver と通信しプログラムからブラウザを操作するライブラリ
  • Chrome(僕のバージョンは89.0.4389.114でした。)
    webブラウザー。今回はChromeを使用していきます。
  • ChromeDriver
    ブラウザをプログラムで動かすためのドライバーです。
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 のバイナリのダウンロードとパスの設定をやってくれる便利なライブラリを公開してくれている方がいます。

https://github.com/danielkaiser/python-chromedriver-binary

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/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA