この記事では、Pythonのselenium
ライブラリを使い、ウェブブラウザの操作を自動化するための基本的な方法について解説します。ページの読み込み、要素の検索、クリック、フォームへの入力といった一連の操作を、最新のSelenium 4の構文に沿って説明します。
1. 準備:SeleniumとWebDriverのセットアップ
selenium
はサードパーティ製のライブラリです。また、ブラウザを操作するためのWebDriver
を自動で管理するwebdriver-manager
も一緒にインストールすると便利です。
pip install selenium webdriver-manager
Selenium 4では、Service
オブジェクトを使ってWebDriverを起動するのが標準的な方法です。以下はFirefoxを起動する例です。
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager
# WebDriverを自動的にインストール・セットアップ
service = Service(GeckoDriverManager().install())
browser = webdriver.Firefox(service=service)
print(f"Selenium WebDriverの型: {type(browser)}")
2. ブラウザの基本操作
WebDriverオブジェクトを使って、ブラウザの基本的な操作が可能です。
browser.get(url)
: 指定したURLのページを開きます。
browser.get('https://ja.wikipedia.org/')
browser.back()
, browser.forward()
, browser.refresh()
: ブラウザの「戻る」「進む」「更新」ボタンに相当します。 browser.quit()
: ブラウザを閉じ、WebDriverのセッションを終了します。
3. ページの要素を検索する
Webページ上の特定の要素(リンク、入力ボックスなど)を検索するには、find_element()
メソッドとBy
クラスを使います。find_element_by_*
という古い書き方は非推奨となりました。
from selenium.webdriver.common.by import By
# Wikipediaのトップページを開く
browser.get('https://ja.wikipedia.org/')
try:
# class名が'central-featured-logo'の要素を検索
logo_element = browser.find_element(By.CLASS_NAME, 'central-featured-logo')
print(f"<{logo_element.tag_name}>タグ(class='{logo_element.get_attribute('class')}')を見つけました。")
except Exception:
print("指定したクラス名を持つ要素は見つかりませんでした。")
検索に使う主なBy
のロケータは以下の通りです。 By.ID
: id
属性で検索 By.CLASS_NAME
: class
属性で検索 By.CSS_SELECTOR
: CSSセレクタで検索 By.LINK_TEXT
: リンクの完全なテキストで検索 By.TAG_NAME
: タグ名('a'
, 'div'
など)で検索
4. 要素の操作:クリックとフォーム入力
要素を見つけたら、クリックしたり、テキストを入力したりできます。
ページをクリックする find_element()
で見つけた要素に対して.click()
メソッドを呼び出します。
# 'メインページ'というテキストを持つリンクを探してクリック
link_element = browser.find_element(By.LINK_TEXT, 'メインページ')
# link_element.click()
フォームを記入して送信する .send_keys()
でテキストを入力し、.submit()
でフォームを送信します。
# Wikipediaの検索フォームを操作する例
browser.get('https://ja.wikipedia.org/')
# idが'searchInput'の検索ボックス要素を取得
search_element = browser.find_element(By.ID, 'searchInput')
# 検索ボックスにテキストを入力
search_element.send_keys('Python')
# フォームを送信
search_element.submit()
5. 特殊キーの送信
send_keys()
では、通常のテキストだけでなく、エンターキーや矢印キーなどの特殊なキーも送信できます。
from selenium.webdriver.common.keys import Keys
# ページ全体を表す<html>タグを取得
html_element = browser.find_element(By.TAG_NAME, 'html')
# ページの一番下までスクロール
html_element.send_keys(Keys.END)
# ページの一番上までスクロール
html_element.send_keys(Keys.HOME)
まとめ
selenium
ライブラリは、Webブラウザの操作を自動化するための強力なフレームワークです。最新のSelenium 4では、webdriver-manager
による簡単なセットアップと、find_element(By.*)
という統一された要素検索方法が推奨されています。ページの読み込み、要素の検索と操作(クリック、入力)、ブラウザ自体の制御といった機能を組み合わせることで、Webテストの自動化やWebスクレイピングなど、幅広いタスクを実行できます。