目次
概要
Selenium WebDriverを使用して、現在開いているWebページのメタ情報(タイトル、URL、HTMLソース)や、ブラウザ自体の状態(ウィンドウサイズ、位置、Cookie)を取得する方法を解説します。
これらはテスト結果の検証(アサーション)や、スクレイピング時の現状確認に不可欠な機能です。
仕様(入出力)
- 入力: なし(現在アクティブなブラウザウィンドウから取得)
- 出力:
- 文字列(タイトル、URL、HTMLソース)
- 辞書型データ(ウィンドウサイズ、位置)
- リスト型データ(Cookie情報)
- 前提:
- Seleniumでブラウザが起動しており、ページが表示されていること。
基本の使い方
ページタイトル、URL、ウィンドウサイズを取得して表示する基本的なコードです。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://morinokabu.com")
# プロパティとメソッドを使い分けて情報を取得
print(f"タイトル: {driver.title}")
print(f"URL: {driver.current_url}")
print(f"サイズ: {driver.get_window_size()}")
driver.quit()
コード全文
リクエストにあった全てのプロパティ・メソッド網羅し、取得した情報を整理して出力する完全な実装例です。
page_source や cookies は情報量が多いため、出力時に調整を行っています。
from selenium import webdriver
import time
def analyze_page_details():
"""
Seleniumでアクセスしたページの各種プロパティとウィンドウ情報を取得・表示します。
"""
driver = webdriver.Chrome()
try:
target_url = "https://morinokabu.com"
print(f"アクセス中: {target_url} ...")
driver.get(target_url)
# ページ読み込み待ち(簡易)
time.sleep(2)
print("\n--- ページ基本情報 ---")
# タイトルとURL(プロパティ)
print(f"Title : {driver.title}")
print(f"Current URL : {driver.current_url}")
print("\n--- ブラウザウィンドウ情報 ---")
# ウィンドウサイズと位置(メソッド)
size = driver.get_window_size()
position = driver.get_window_position()
print(f"Size : 幅 {size['width']} px, 高さ {size['height']} px")
print(f"Position : X {position['x']}, Y {position['y']}")
print("\n--- Cookie情報 ---")
# Cookieのリスト(メソッド)
cookies = driver.get_cookies()
print(f"Cookie数 : {len(cookies)} 個")
if cookies:
# 最初の1つだけサンプル表示
print(f"Sample : {cookies[0]['name']} = {cookies[0]['value']}...")
print("\n--- HTMLソース ---")
# ページソース(プロパティ)
src = driver.page_source
# 全文は長すぎるため、先頭200文字だけ表示
print(f"Source (先頭200文字):\n{src[:200]}...")
except Exception as e:
print(f"エラーが発生しました: {e}")
finally:
driver.quit()
if __name__ == "__main__":
analyze_page_details()
カスタムポイント
取得できる情報と、それが「プロパティ(属性)」なのか「メソッド(関数)」なのかの対応表です。
| 名称 | 種別 | 処理内容・戻り値 |
| driver.title | プロパティ | 現在のページの <title> タグの内容を文字列で返します。 |
| driver.current_url | プロパティ | アドレスバーに表示されている現在のURLを文字列で返します。 |
| driver.page_source | プロパティ | 現在のページの完全なHTMLソースコードを文字列で返します。 |
| driver.get_cookies() | メソッド | ブラウザに保存されているCookieのリストを返します。 |
| driver.get_window_size() | メソッド | ウィンドウの幅と高さを辞書 {'width': int, 'height': int} で返します。 |
| driver.get_window_position() | メソッド | ウィンドウの左上座標を辞書 {'x': int, 'y': int} で返します。 |
注意点
- プロパティとメソッドの混同
titleやcurrent_urlは()を付けないプロパティです。逆にget_window_size()は()が必要なメソッドです。間違えるとエラーになります。
- page_sourceの鮮度
driver.page_sourceは、アクセスした瞬間ではなく「取得した時点」のDOMの状態を返します。JavaScriptでDOMが書き換えられた後の状態を取得できるため、静的なスクレイピング(Requestsライブラリ等)よりも見たままに近い情報が得られます。
- プライバシーとCookie
get_cookies()で取得できる情報は機密情報を含む場合があります。ログ出力する際はセッションIDなどをマスクするよう注意してください。
応用
取得したウィンドウサイズ情報を利用して、ウィンドウを画面中央に配置し直す応用例です。
from selenium import webdriver
def center_window():
driver = webdriver.Chrome()
driver.get("https://morinokabu.com")
# 1. 画面サイズを擬似的に定義(モニター解像度が1920x1080の場合)
screen_w, screen_h = 1920, 1080
# 2. ブラウザサイズを設定
target_w, target_h = 1280, 720
driver.set_window_size(target_w, target_h)
# 3. 中央位置を計算
pos_x = (screen_w - target_w) // 2
pos_y = (screen_h - target_h) // 2
# 4. 位置を設定
driver.set_window_position(pos_x, pos_y)
print(f"ウィンドウを中央({pos_x}, {pos_y})に移動しました")
# 少し待って終了
import time
time.sleep(2)
driver.quit()
if __name__ == "__main__":
center_window()
まとめ
WebDriverから取得できる情報は、自動化スクリプトの「目」となる重要なデータです。
特に current_url はページ遷移が正しく行われたかの確認に、page_source は要素が見つからないデバッグ時に役立ちます。プロパティとメソッドの違いを意識して使い分けましょう。
