selenium
は、Python
を使ってWebブラウザを自動で操作できる強力なライブラリです。自動化ツールとして広く使われ、ブラウザ上でのフォーム入力、クリック操作、スクリーンショットの取得、さらにはWebアプリケーションの自動テストなど、多岐にわたる操作を効率的に自動化できます。この記事では、Python
とseleniumを使ったWeb操作の自動化方法について基本的なステップを解説します。
seleniumとは?
selenium
は、ブラウザの自動操作を行うためのオープンソースライブラリです。Python
、Java、C#などの言語で使用可能ですが、この記事ではPython
での利用方法を中心に紹介します。seleniumを使うことで、以下のようなWeb操作を自動化できます。
- フォームの自動入力
- ボタンのクリック
- ページのスクロール
- スクリーンショットの取得
- Webアプリケーションの自動テスト
主なブラウザ(Chrome、Firefox、Edge、Safari)に対応しており、それぞれに対応する
WebDriver
を使ってブラウザを操作します。
seleniumのインストールとセットアップ
seleniumのインストール
まず、seleniumライブラリをインストールします。以下のコマンドをターミナルで実行してください。
pip install selenium
WebDriverの準備
seleniumでは、各ブラウザに対応したWebDriver
を使ってブラウザを操作します。例えば、Google Chromeを操作するにはChromeDriver
を使用します。以下は、ChromeDriverのインストール方法です。
- ChromeDriver公式サイトから、Chromeのバージョンに対応したChromeDriverをダウンロードします。
- ダウンロードしたファイルを適切なフォルダに解凍し、そのパスを環境変数に追加するか、後述のコード内で指定します。
Firefoxを使う場合は、同様に
geckodriver
を準備します。
基本的なブラウザ操作
ここでは、seleniumを使ってChromeブラウザを起動し、指定したURLを開く基本的な操作を見ていきます。
from selenium import webdriver
# ChromeDriverのパスを指定してブラウザを起動
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# 指定したURLを開く
driver.get('https://www.example.com')
# ブラウザを終了
driver.quit()
webdriver.Chrome()
:Chromeブラウザを起動します。executable_path
でChromeDriverのパスを指定します。driver.get(url)
:指定したURLを開きます。driver.quit()
:操作が終わったらブラウザを閉じます。 これだけで、Python
からChromeを自動操作してWebページを開けるようになりました。
Web要素の操作
次に、seleniumを使ってWebページ上の要素を取得し、操作する方法を見ていきます。主な操作として、テキストの入力やボタンのクリックなどがあります。
要素の検索
Webページの要素(ボタンや入力フォームなど)を取得するには、seleniumのfind_element
メソッドを使用します。次のコードは、特定の要素をIDで取得する例です。
# 要素をIDで検索
search_box = driver.find_element('id', 'search')
# 要素にテキストを入力
search_box.send_keys('`Python`自動化')
find_element('id', 'search')
:HTML要素をIDで検索します。その他にも、name
やclass_name
、xpath
などで要素を検索できます。
フォームの自動入力とボタンのクリック
以下は、フォームにテキストを入力し、送信ボタンをクリックする例です。
# 検索ボックスにテキストを入力
search_box = driver.find_element('name', 'q')
search_box.send_keys('selenium `Python`')
# 検索ボタンをクリック
search_button = driver.find_element('name', 'btnK')
search_button.click()
ここでは、Googleの検索フォームに"selenium
Python"
と入力し、検索ボタンをクリックする操作を自動化しています。
ページ遷移後の処理
ページ遷移後、操作対象の要素がロードされるまで待つ必要がある場合があります。このとき、WebDriverWait
を使って要素が表示されるのを待機します。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 指定の要素が表示されるまで最大10秒間待機
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'resultStats'))
)
このコードでは、Googleの検索結果ページで、検索結果の統計情報(ID: resultStats
)が表示されるまで最大10秒間待機します。
その他の自動操作
スクロール操作
ページの下部にある要素にアクセスしたい場合、スクロールを自動化する必要があります。以下は、ページをスクロールする例です。
# ページの最下部までスクロール
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
execute_script()
メソッドを使うと、JavaScriptを実行してページ操作が可能です。
スクリーンショットの保存
操作しているページのスクリーンショットを自動で保存することもできます。
# スクリーンショットを保存
driver.save_screenshot('screenshot.png')
自動化の応用例
seleniumの基本的な操作を覚えたら、さまざまな自動化タスクに応用できます。以下はいくつかの応用例です。
6.1. ログインの自動化
ログインフォームを自動入力して、ログイン処理を自動化することができます。
# ユーザー名とパスワードを入力してログイン
username = driver.find_element('name', 'username')
password = driver.find_element('name', 'password')
username.send_keys('your_username')
password.send_keys('your_password')
# ログインボタンをクリック
login_button = driver.find_element('name', 'login')
login_button.click()
6.2. Webスクレイピング
Webスクレイピングとは、Webページから特定の情報を取得する作業です。seleniumを使うと、動的に生成されるコンテンツ(JavaScriptで後から読み込まれる要素など)も簡単に取得できます。
# 取得したページのHTMLを取得
page_source = driver.page_source
print(page_source)
このコードで、ページのHTML全体を取得 し、解析することができます。
まとめ
selenium
を使うことで、Python
から簡単にWebブラウザを自動操作できるようになります。フォーム入力やボタンのクリックなどの操作を自動化できるだけでなく、スクロールやスクリーンショットの保存、ページ遷移後の要素待機など、さまざまな操作も可能です。これにより、Webサイトのテスト自動化や日常的なWeb作業の効率化が図れます。
ぜひseleniumを使って、ブラウザ操作を自動化し、日々の作業をさらに効率的にしてみてください。