Selenium WebDriverを用いた要素情報の取得とブラウザ操作の包括ガイド

ブラウザとページ情報の取得

Selenium WebDriverを使用して、現在操作中のブラウザの状態やページの基本情報を取得する方法です。最新の構文(Byクラスの使用)に基づいた実装例を示します。

  • 現在のURLの取得
    アクティブなページのURLを確認するには、current_urlプロパティを使用します。
# ブラウザインスタンスをbrowserと仮定
current_address = browser.current_url
print(f"現在のURL: {current_address}")
  • ブラウザ名の取得
    セッション中のブラウザ名(例: 'chrome', 'firefox')を特定します。
browser_type = browser.name

要素の特定と座標・サイズの確認

画面上の特定のUI要素に関する幾何学的情報を抽出する手法です。

  • 要素の座標取得
    要素の左上隅のX/Y座標を辞書形式で取得します。
from selenium.webdriver.common.by import By

# XPathを用いて要素を特定
target_element = browser.find_element(By.XPATH, "//div[@class='chart-container']/table/tbody/tr[3]/td[2]")
element_position = target_element.location
# 出力例: {'x': 150, 'y': 300}
  • 要素の寸法取得
    要素の幅と高さをピクセル単位で取得します。
input_field = browser.find_element(By.ID, "user_password")
dimensions = input_field.size
# 出力例: {'width': 200, 'height': 40}

要素の状態検証

UI要素がユーザーに対してどのような状態にあるか(表示、有効、選択)を確認するためのメソッド群です。

  • 表示状態の確認 (is_displayed)
    要素が画面上に見えているかどうかを判定します。
is_visible = browser.find_element(By.ID, "status_msg").is_displayed()
  • 有効状態の確認 (is_enabled)
    要素が操作可能(グレーアウトされていない)かどうかを判定します。
is_active = browser.find_element(By.ID, "submit_button").is_enabled()
  • 選択状態の確認 (is_selected)
    チェックボックスやラジオボタンが選択されているかを判定します。
is_checked = browser.find_element(By.ID, "agree_terms").is_selected()

属性、スタイル、およびテキストの抽出

DOM要素から詳細なデータを抽出する操作です。

  • テキスト内容の取得
    要素内の可視テキストを取得します。
label_text = browser.find_element(By.ID, "welcome_msg").text
  • HTML属性値の取得
    指定した属性(例: href, placeholder, value)の値を取得します。
link_attr = browser.find_element(By.ID, "external_link").get_attribute("href")
  • CSSプロパティ値の取得
    計算済みのCSSスタイルプロパティ(色、フォントなど)の値を取得します。
btn = browser.find_element(By.CSS_SELECTOR, "button.primary")
bg_color = btn.value_of_css_property("background-color")
  • タグ名の取得
    要素のタグ名(例: 'input', 'div')を取得します。
tag = browser.find_element(By.ID, "login_form").tag_name

ユーザー操作シミュレーション

フォームへの入力や送信など、ユーザーによる操作をコードで再現します。

  • テキスト入力 (send_keys)
    入力フィールドに文字列を送信します。Unicode文字列を扱う際は明示的な指定が必要な場合があります。
username_input = browser.find_element(By.ID, "username")
username_input.send_keys("test_user")
# 日本語などを入力する場合
# username_input.send_keys(u"サンプル")
  • フォームの送信 (submit)
    form要素、あるいはフォーム内の入力要素から submit メソッドを呼び出します。
# Form要素を特定して送信
login_form = browser.find_element(By.ID, "auth_form")
login_form.submit()

ブラウザ制御とナビゲーション

ウィンドウ管理、履歴移動、クッキー操作などのブラウザ自体の制御を行います。

  • 暗黙的な待機時間の設定
    要素が見つかるまでの最大待機時間を秒単位で設定します。
browser.implicitly_wait(10)  # 10秒間待機
  • ウィンドウの最大化
    ブラウザウィンドウを画面いっぱいに広げます。
browser.maximize_window()
  • 履歴の逆移動
    ブラウザの「戻る」ボタンと同じ動作をします。
browser.back()
  • クッキーの削除
    特定のクッキー、またはすべてのクッキーを削除します。
# 全てのクッキーを削除
browser.delete_all_cookies()

# 特定のクッキーを削除
browser.delete_cookie("session_id")
  • セッションの終了
    カレントタブのみを閉じる場合は close()、ブラウザ全体とドライバプロセスを終了する場合は quit() を使用します。
browser.close()   # 現在のウィンドウを閉じる
browser.quit()   # ドライバを含め全て終了する

タグ: Selenium WebDriver Python Browser Automation testing

7月4日 19:48 投稿