【Python】Seleniumで現在ページのタイトル・URL・ウィンドウ情報を取得する

目次

概要

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} で返します。

注意点

  1. プロパティとメソッドの混同
    • titlecurrent_url() を付けないプロパティです。逆に get_window_size()() が必要なメソッドです。間違えるとエラーになります。
  2. page_sourceの鮮度
    • driver.page_source は、アクセスした瞬間ではなく「取得した時点」のDOMの状態を返します。JavaScriptでDOMが書き換えられた後の状態を取得できるため、静的なスクレイピング(Requestsライブラリ等)よりも見たままに近い情報が得られます。
  3. プライバシーと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 は要素が見つからないデバッグ時に役立ちます。プロパティとメソッドの違いを意識して使い分けましょう。

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

この記事を書いた人

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

目次