PythonとSeleniumによるブラウザ自動操作入門(Selenium 4対応版)

この記事では、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スクレイピングなど、幅広いタスクを実行できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次