Seleniumは、Webアプリケーションのテストを行うためのツールです。このツールを使用してブラウザを操作し、APIを通じてWebアプリケーションのユーザーインターフェースをテストできます。
まず、SeleniumライブラリとChromedriverをインストールする必要があります。以下のようにpipコマンドを使用してSeleniumをインストールします:
pip install selenium
また、Chromeブラウザのバージョンに対応したChromedriverも必要です。Chromeブラウザは自動更新されるため、これを無効にする必要があります。
Chrome更新の無効化
- サービスの管理
- キーボードの「Windows + R」キーを押して「msconfig」を実行。
- 「サービス」タブで不要なサービスを停止。
- タスクスケジューラーの管理
- 「マイコンピュータ」を右クリックし、「管理」を選択。
- 「タスクスケジューラー」で自動更新に関連するタスクを無効化。
- 必要なファイルのダウンロード
- Chromeの古いバージョンを次のリンクから入手:Chrome旧バージョン
- Chromedriverのダウンロードリンク:Chromedriver
環境設定
-
Chromedriverの配置 ダウンロードしたChromedriverをChromeのインストールディレクトリにコピーします。
-
環境変数の設定 PATH環境変数にChromedriverのパスを追加します。
-
動作確認 コマンドプロンプトで「chromedriver」と入力して起動を確認します。
基本的なテストコード
以下のPythonコードは、指定されたURLを開いてウィンドウサイズを最大化します。
from selenium import webdriver
# URLの定義
target_url = "https://www.google.com"
# WebDriverの初期化
browser = webdriver.Chrome()
# ウィンドウサイズの最大化
browser.maximize_window()
# 指定されたURLへのアクセス
browser.get(target_url)
要素の正確な位置決め
Seleniumでは、要素の位置を特定するためにさまざまな方法があります。
-
ID ID属性に基づいて要素を取得します。通常、IDは重複しません。
-
NAME NAME属性を使用して要素を取得します。重複する可能性があります。
-
TAG NAME タグ名を使用して要素を取得します。通常、他の要素と重複します。
-
CLASS NAME CLASS属性を使用して要素を取得します。値が長い場合、コードの可読性が低下します。
-
LINK TEXT テキストに基づいてリンクを特定します。
<a>タグ専用です。 -
PARTIAL LINK TEXT 部分的なテキストに基づいてリンクを特定します。
<a>タグ専用です。 -
CSS SELECTOR CSSセレクターを使用して要素を特定します。class属性などを利用することが多いです。
-
XPATH XPATHを使用して要素を特定します。これはDOMの階層構造に基づきます。
例として、要素の検索方法を以下に示します:
element = browser.find_element("css selector", ".example-class")
特殊操作:ウィンドウハンドルの切り替え
ブラウザには複数のタブ(ウィンドウ)があり、それぞれ固有のハンドルを持っています。デフォルトでは最初のタブに焦点が当たっています。新しいタブでの操作が必要な場合は、ハンドルを切り替える必要があります。
# 全てのウィンドウハンドルを取得
tabs = browser.window_handles
# 最初のタブを閉じる
browser.close()
# 2番目のタブに切り替え
browser.switch_to.window(tabs[1])
print(browser.title)
# 再び最初のタブに戻る
browser.switch_to.window(tabs[0])
print(browser.title)
これにより、異なるタブ間でのシームレスな操作が可能になります。