目次
- Seleniumとは?なぜ学ぶのか
- 環境構築ガイド
- 基礎知識 - 知っておくべき用語
- はじめてのテストコード
- 要素の見つけ方
- 基本操作をマスターする
- 待機処理 - タイミングの制御
- 実践: 入力フォーム送信のテスト
- よくあるエラーと対処法
- まとめ
- 参考資料
はじめに
NTTテクノクロス田中優希です。
この記事はNTTテクノクロスAdvent Calendar 2025 : シリーズ2、19日目の記事です。
Webアプリケーション開発において、テストは品質を保証するために欠かせない工程です。しかし、手作業でのテストは時間がかかり、機能追加やリファクタリングのたびに同じテストを繰り返す必要があります。
■自動テスト導入の実際の効果
私自身、実際の案件でSeleniumを使った自動テストを導入し、大きな成果を実感しました。特に効果的だったのは、回帰テスト(既存機能が正しく動作するか確認するテスト)の自動化です。
■具体的な工数削減の事例
あるテストでは、2,000項目の試験項目があり、手作業で実施すると1日かかる作業でした。
さらに、バグ修正に伴い最低でも5回の再テストが必要でした。
しかし、Seleniumによる自動化を導入したことで、以下のような工数削減を実現しました。
・手作業の場合
5日 × 24時間 = 120時間
人日換算:120時間 ÷ 7.5時間/日 = 約16人日(1人月以上)
この自動化により、約16人日分の工数を削減し、開発スピードと品質の両立を達成しました。さらに、バグの早期発見につながり、後工程での手戻りを防止する効果もありました。
■このチュートリアルで学べること
本チュートリアルでは、Seleniumの基礎から実践的な使い方まで、初心者の方でも理解できるよう丁寧に解説します。実際に手を動かしながら学べる構成になっていますので、ぜひ自動テスト導入の第一歩として活用してください。
1. Seleniumとは?なぜ学ぶのか
1.1 Seleniumとは
Seleniumは、Webブラウザを自動で操作できるツールです。
人間がマウスやキーボードで行う操作を、プログラムで再現できます。
1.2 具体的にできること
- Webページを自動で開く
- フォームに文字を入力する
- ボタンをクリックする
- 検索結果を確認する
- スクリーンショットを撮る
1.3 なぜSeleniumを学ぶのか
手動テストの課題
- テストに時間がかかる(同じ操作を何度も繰り返す必要がある)
- 人的ミスが発生しやすい
- アプリケーションが大きくなるとテストが追いつかない
- コード変更のたびに全部チェックするのは困難
自動化のメリット
- 効率化: 夜間に自動でテストを実行できる
- 品質向上: 同じテストを正確に繰り返せる
- 回帰テスト: 既存機能が壊れていないか簡単に確認できる
1.4 このチュートリアルで学べること
- Seleniumの環境構築
- 基本的なブラウザ操作
- 実践的なテストコードの書き方
- よくあるエラーの解決方法
2. 環境構築ガイド
2.1 必要なもの
Seleniumを使うために必要なツール一覧:
| ツール | 説明 | バージョン |
|---|---|---|
| Python | プログラミング言語 | 3.7以降 |
| Selenium | ブラウザ自動化ライブラリ | 最新版 |
| WebDriver | ブラウザを操作するドライバ | ChromeDriver等 |
| テキストエディタ | コードを書くツール | VS Code等 |
| Webブラウザ | テスト対象 | Chrome等 |
2.2 インストール手順
Step 1: Pythonのインストール
Python公式サイトからダウンロードしてインストールします。
参考: Pythonインストール手順
確認方法(ターミナルで実行):
python --version
Step 2: Seleniumのインストール
コマンドプロンプトまたはターミナルで実行:
pip install selenium
Step 3: ChromeDriverのインストール
ChromeDriver公式サイトからダウンロードしてインストールします。
3. 基礎知識 - 知っておくべき用語
3.1 重要な用語集
| 用語 | 説明 |
|---|---|
| WebDriver | ブラウザを操作するためのインターフェース |
| 要素(Element) | Webページ上のボタン、テキストボックスなどの部品 |
| ロケーター(Locator) | 要素を見つけるための方法(ID、Class、XPathなど) |
| セレクタ(Selector) | 要素を特定するための記述方法 |
| 待機(Wait) | 要素が表示されるまで待つ処理 |
Seleniumの仕組み
動作の流れ
- 命令 - Pythonコードでdriver.get("URL")などの命令を書く
- 変換 - WebDriverが命令をブラウザが理解できる形式に変換
- 実行 - ブラウザが実際に動作する(ページを開く、クリックするなど)
- 結果 - 実行結果がPythonに返される(タイトル、テキストなど)
4. はじめてのテストコード
実際に手を動かしてSeleniumの基本を学びましょう。
4.1 ブラウザを開いて閉じる
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
# ステップ1: ブラウザを起動
service = Service(executable_path="chromedriver.exe")
driver = webdriver.Chrome(service=service)
# ステップ2: ページを開く
driver.get("https://www.google.co.jp/")
# 2秒待機
time.sleep(2)
# ステップ3: タイトルを表示
print(driver.title)
# ステップ4: ブラウザを閉じる
driver.quit()
実行結果:
ページタイトル: Google
コードの詳細解説
インポート文
from selenium import webdriver
- Seleniumのメイン機能をインポート
-
webdriverを使ってブラウザを操作
from selenium.webdriver.chrome.service import Service
- ChromeDriverのパスを明示的に指定するために使用
- ChromeDriverの実行ファイルの場所を管理する
import time
- 待機処理に使用
Serviceオブジェクトの作成
service = Service(executable_path="chromedriver.exe")
このコードでできること:
- ChromeDriverの実行ファイル(
chromedriver.exe)の場所を指定 -
executable_pathにChromeDriverのパスを設定
パスの指定方法:
# 相対パス(カレントディレクトリにある場合)
service = Service(executable_path="chromedriver.exe")
# 絶対パス
service = Service(executable_path="C:/drivers/chromedriver.exe")
webdriver.Chrome()にServiceを渡す
driver = webdriver.Chrome(service=service)
このコードでできること:
- 指定したChromeDriverを使ってChromeブラウザを起動
-
driverオブジェクトを通じてブラウザを操作可能に
待機処理
time.sleep(2)
このコードでできること:
- プログラムを2秒間停止
- ブラウザの動作を目視で確認するのに便利
タイトルを取得
print(driver.title)
このコードでできること:
- 現在のページのタイトルを取得
-
<title>タグの内容が返される
タイトルを取得
print(driver.title)
このコードでできること:
- 現在のページのタイトルを取得
-
<title>タグの内容が返される
ブラウザを閉じる
driver.quit()
このコードでできること:
- ブラウザを閉じる
5. 要素の見つけ方
Seleniumでは、Webページ上の要素を特定して操作します。
5.1 要素を見つける方法一覧
| 方法 | 構文 | 使いどころ |
|---|---|---|
| ID | By.ID, "value" |
最も推奨。一意で変わらない |
| Name | By.NAME, "value" |
フォーム要素によく使う |
| CSS Selector | By.CSS_SELECTOR, "value" |
柔軟に探せる |
| XPath | By.XPATH, "value" |
最も柔軟だが複雑 |
5.2 実際のHTML例と取得方法
以下のHTMLを例に、各方法を見ていきましょう:
<form id="login-form" class="auth-form">
<input type="text" id="username" name="user" class="input-field" placeholder="ユーザー名">
<input type="password" id="password" name="pass" class="input-field" placeholder="パスワード">
<button id="submit-btn" class="btn btn-primary" type="submit">ログイン</button>
<a href="/forgot-password" class="link">パスワードを忘れた方はこちら</a>
</form>
方法1: IDで探す
from selenium.webdriver.common.by import By
# ユーザー名の入力フィールドをIDで取得
username = driver.find_element(By.ID, "username")
# パスワードの入力フィールド
password = driver.find_element(By.ID, "password")
# ログインボタン
submit_btn = driver.find_element(By.ID, "submit-btn")
メリット:
- 一意性が保証される
- 高速に見つかる
- メンテナンスしやすい
デメリット:
- すべての要素にIDがあるとは限らない
方法2: Nameで探す
# Name属性で取得
username = driver.find_element(By.NAME, "user")
password = driver.find_element(By.NAME, "pass")
使いどころ:
- フォーム要素(input、select、textareaなど)
- サーバー送信時の識別名として使用
方法3: CSS Selectorで探す
# IDで探す(#を使用)
username = driver.find_element(By.CSS_SELECTOR, "#username")
# Classで探す(.を使用)
button = driver.find_element(By.CSS_SELECTOR, ".btn-primary")
# 複数の条件を組み合わせ
submit = driver.find_element(By.CSS_SELECTOR, "button.btn.btn-primary")
# 属性で探す
password = driver.find_element(By.CSS_SELECTOR, "input[type='password']")
# 子要素を探す
form_input = driver.find_element(By.CSS_SELECTOR, "form#login-form input#username")
- 下記を覚える必要はない。ブラウザ開発者ツールから 「Copy」→ 「Copy selector」から取得できる
(詳細: 5.3 ブラウザ開発者ツールの使い方を参照)
CSS Selectorの基本構文:
| 記法 | 意味 | 例 |
|---|---|---|
#id |
ID | #username |
.class |
Class | .btn |
element |
タグ名 | button |
[attribute=value] |
属性 | [type='text'] |
parent > child |
直接の子要素 | form > input |
ancestor descendant |
子孫要素 | form input |
方法4: XPathで探す
# IDで探す
username = driver.find_element(By.XPATH, "//input[@id='username']")
# Classで探す
button = driver.find_element(By.XPATH, "//button[@class='btn btn-primary']")
# テキストで探す
link = driver.find_element(By.XPATH, "//a[text()='パスワードを忘れた方はこちら']")
# 部分一致
link = driver.find_element(By.XPATH, "//a[contains(text(), 'パスワード')]")
# 階層構造で探す
input_in_form = driver.find_element(By.XPATH, "//form[@id='login-form']//input[@name='user']")
# n番目の要素
second_input = driver.find_element(By.XPATH, "(//input[@class='input-field'])[2]")
- 下記を覚える必要はない。ブラウザ開発者ツールから 「Copy」→ 「Copy XPath」から取得できる
(詳細: 5.3 ブラウザ開発者ツールの使い方を参照)
XPathの基本構文:
| 記法 | 意味 | 例 |
|---|---|---|
// |
全体から検索 | //input |
/ |
直接の子要素 | /html/body/form |
[@attribute='value'] |
属性で絞り込み | [@id='username'] |
[text()='value'] |
テキストで絞り込み | [text()='ログイン'] |
contains() |
部分一致 | [contains(@class, 'btn')] |
[n] |
n番目の要素 | [1] |
5.3 ブラウザ開発者ツールの使い方
要素の見つけ方を調べる最も簡単な方法は、ブラウザの開発者ツールを使用することです。
手順:
-
開発者ツールを開く
- Windows:
F12またはCtrl + Shift + I
- Windows:
-
要素を選択
- 左上の矢印アイコン(要素選択モード)をクリック
- ページ上の調べたい要素をクリック
-
HTMLを確認
- 要素のHTMLコードが表示される
- ID、Class、Name などの属性を確認
-
XPathやCSS Selectorを取得
- 要素を右クリック → 「Copy」→ 「Copy XPath」または「Copy selector」
6. 基本操作をマスターする
要素を見つけた後は、実際に操作する方法を学びましょう。
6.1 テキスト入力
サンプルHTML:
<form id="login-form" class="auth-form">
<input type="text" id="username" name="user" class="input-field" placeholder="ユーザー名">
<input type="password" id="password" name="pass" class="input-field" placeholder="パスワード">
<button id="submit-btn" class="btn btn-primary" type="submit">ログイン</button>
</form>
実装例
from selenium.webdriver.common.by import By
# 要素を見つける
input_field = driver.find_element(By.ID, "username")
# テキストを入力
input_field.send_keys("testuser")
結果: ユーザー名の入力欄に testuser が入力されます。
6.2 ボタンをクリック
サンプルHTML:
<form id="login-form" class="auth-form">
<input type="text" id="username" name="user" class="input-field" placeholder="ユーザー名">
<input type="password" id="password" name="pass" class="input-field" placeholder="パスワード">
<button id="submit-btn" class="btn btn-primary" type="submit">ログイン</button>
</form>
実装例
# ボタンを見つけてクリック
button = driver.find_element(By.ID, "submit-btn")
button.click()
結果: ログインボタンがクリックされます。
6.3 プルダウン(セレクトボックス)
サンプルHTML
<form id="shipping-form">
<select id="country" name="country">
<option value="">選択してください</option>
<option value="jp">日本</option>
<option value="us">アメリカ</option>
<option value="uk">イギリス</option>
</select>
</form>
実装例
from selenium.webdriver.support.ui import Select
# セレクト要素を取得
select_element = Select(driver.find_element(By.ID, "country"))
# 値で選択
select_element.select_by_value("jp")
# 表示テキストで選択
select_element.select_by_visible_text("日本")
# インデックスで選択(0始まり)
select_element.select_by_index(1)
結果: プルダウンから「日本」が選択されます。
6.4 テキストの取得
サンプルHTML
<div id="message" class="alert">
<strong>成功:</strong> ログインしました
</div>
実装例
# 表示されているテキストを取得
element = driver.find_element(By.ID, "message")
text = element.text
結果: 画面から「成功: ログインしました」のテキストが取得されます。
6.5 よく使う要素操作のメソッド
基本操作
# テキスト入力・操作
element.send_keys("text") # テキストを入力
element.clear() # 入力内容をクリア
element.click() # クリック
Select要素(プルダウン)
from selenium.webdriver.support.ui import Select
select = Select(element)
# 選択
select.select_by_value("value") # 値で選択
select.select_by_visible_text("text") # テキストで選択
select.select_by_index(0) # インデックスで選択
# 選択解除
select.deselect_all() # すべて解除
select.deselect_by_value("value") # 値で解除
7. 待機処理 - タイミングの制御
7.1 なぜ待機が必要か
Webページは瞬時に読み込まれません。要素が表示される前にクリックしようとするとエラーになります。
7.2 time.sleepは使わない
import time
time.sleep(5) # これは良くない!
理由: 必要以上に待つため、テストが遅くなる
7.3 正しい待機方法
明示的な待機(推奨)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 最大10秒待機
wait = WebDriverWait(driver, 10)
# 要素が表示されるまで待つ
element = wait.until(
EC.presence_of_element_located((By.ID, "result"))
)
# クリック可能になるまで待つ
button = wait.until(
EC.element_to_be_clickable((By.ID, "submit"))
)
button.click()
暗黙的な待機
# すべての要素検索に適用される
driver.implicitly_wait(10) # 10秒
7.4 よく使う待機条件
| 条件 | 説明 |
|---|---|
presence_of_element_located |
要素がDOM内に存在する |
visibility_of_element_located |
要素が表示されている |
element_to_be_clickable |
要素がクリック可能 |
text_to_be_present_in_element |
要素内に特定のテキストがある |
8. 実践: 入力フォーム送信のテスト
8.1 実践課題の概要
これまで学んだ知識を活かして、実際のWebフォームの自動入力・送信テストを作成します。
8.2 課題の進め方
各Stepごとに以下の流れで進めてください:
- 課題を読む - 何を実装するか確認
- 自分で実装してみる - これまで学んだ知識を使って挑戦
- 解答例を確認 - わからない場合や答え合わせに使用
- 実行して動作確認 - 正しく動くか確認
Step 1: ページを開く
課題
テスト対象のWebページを開いてください。
対象URL:
https://www.lambdatest.com/selenium-playground/input-form-demo
解答例
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# ブラウザを起動
service = Service(executable_path="chromedriver.exe")
driver = webdriver.Chrome(service=service)
try:
# ページを開く
driver.get("https://www.lambdatest.com/selenium-playground/input-form-demo")
except Exception as e:
print(f"エラーが発生しました: {e}")
finally:
# 後で閉じるので、ここではまだquit()しない
pass
Step 2: 入力フォームに値を入れる
課題
フォームの各項目に値を入力してください。
ポイント:
- 様々な要素取得方法を使いましょう(ID、NAME、CSS_SELECTOR、XPATHなど)
- 「5. 要素の見つけ方」「6. 基本操作をマスターする」を参考にしてください
- ⑥のCountryはプルダウン(セレクトボックス)です
入力項目一覧:
| No | 項目名 | 入力値 | 要素タイプ |
|---|---|---|---|
| ① | Name | 田中太郎 | テキスト入力 |
| ② | tanaka@example.com | テキスト入力 | |
| ③ | Password | SecurePass123 | テキスト入力 |
| ④ | Company | テスト株式会社 | テキスト入力 |
| ⑤ | Website | https://example.com | テキスト入力 |
| ⑥ | Country | Japan | プルダウン |
| ⑦ | City | 東京 | テキスト入力 |
| ⑧ | Address 1 | 渋谷区1-2-3 | テキスト入力 |
| ⑨ | Address 2 | テストビル4F | テキスト入力 |
| ⑩ | State | Tokyo | テキスト入力 |
| ⑪ | Zip Code | 150-0001 | テキスト入力 |
解答例
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
# 待機オブジェクトを作成(最大10秒待機)
wait = WebDriverWait(driver, 10)
# ① Name を入力 (IDで探す)
name_field = wait.until(
EC.presence_of_element_located((By.ID, "name"))
)
name_field.clear()
name_field.send_keys("田中太郎")
# ② Email を入力 (IDで探す)
email_field = driver.find_element(By.ID, "inputEmail4")
email_field.clear()
email_field.send_keys("tanaka@example.com")
# ③ Password を入力 (NAMEで探す)
password_field = driver.find_element(By.NAME, "password")
password_field.clear()
password_field.send_keys("SecurePass123")
# ④ Company を入力 (IDで探す)
company_field = driver.find_element(By.ID, "company")
company_field.clear()
company_field.send_keys("テスト株式会社")
# ⑤ Website を入力 (CSS Selectorで探す)
website_field = driver.find_element(By.CSS_SELECTOR, "#websitename")
website_field.clear()
website_field.send_keys("https://example.com")
# ⑥ Country をプルダウンから選択 (Selectクラスを使用)
country_select = Select(driver.find_element(By.NAME, "country"))
country_select.select_by_visible_text("Japan")
# ⑦ City を入力 (XPathで探す)
city_field = driver.find_element(By.XPATH, "//input[@id='inputCity']")
city_field.clear()
city_field.send_keys("東京")
# ⑧ Address 1 を入力 (CSS_SELECTORで探す)
address1_field = driver.find_element(By.CSS_SELECTOR, "input[name='address_line1']")
address1_field.clear()
address1_field.send_keys("渋谷区1-2-3")
# ⑨ Address 2 を入力 (IDで探す)
address2_field = driver.find_element(By.ID, "inputAddress2")
address2_field.clear()
address2_field.send_keys("テストビル4F")
# ⑩ State を入力 (IDで探す)
state_field = driver.find_element(By.ID, "inputState")
state_field.clear()
state_field.send_keys("Tokyo")
# ⑪ Zip code を入力 (XPATHで探す)
zip_field = driver.find_element(By.XPATH, "//input[@name='zip']")
zip_field.clear()
zip_field.send_keys("150-0001")
Step 3: Submitボタンをクリックする
課題
フォーム送信のため、Submitボタンをクリックしてください。
解答例
# Submitボタンがクリック可能になるまで待機
submit_button = wait.until(
EC.element_to_be_clickable((By.XPATH, "//button[text()='Submit']"))
)
# Submitボタンをクリック
submit_button.click()
Step 4: 結果を検証する
課題
フォーム送信後、期待した成功メッセージが表示されているか確認してください。
検証条件:
- 期待される文字列: 「Thanks for contacting us」
- 成功の場合: 「OK: フォームが正常に送信されました!」と表示
- 失敗の場合: 「NG: 予期しないメッセージ」と表示
解答例
# 成功メッセージが表示されるまで待機
success_message = wait.until(
EC.visibility_of_element_located((By.CLASS_NAME, "success-msg"))
)
# メッセージテキストを取得
message_text = success_message.text
# 期待される成功メッセージを確認
if "Thanks for contacting us" in message_text:
print("OK: フォームが正常に送信されました!")
else:
print(f"NG: 予期しないメッセージ - {message_text}")
Step 5: ブラウザを終了する
課題
テスト完了後、ブラウザを終了してください。
解答例
# ブラウザを終了
driver.quit()
8.3 完全なテストコード
すべてのStepを組み合わせた完全なコードです。
完全なテストコード
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
import time
# ステップ1: ブラウザを起動
service = Service(executable_path="chromedriver.exe")
driver = webdriver.Chrome(service=service)
try:
# ステップ2: ページを開く
driver.get("https://www.lambdatest.com/selenium-playground/input-form-demo")
# ステップ3: 入力画面に値を入れる
# 待機オブジェクトを作成(最大10秒待機)
wait = WebDriverWait(driver, 10)
# ① Name を入力 (IDで探す)
name_field = wait.until(
EC.presence_of_element_located((By.ID, "name"))
)
name_field.clear()
name_field.send_keys("田中太郎")
# ② Email を入力 (IDで探す)
email_field = driver.find_element(By.ID, "inputEmail4")
email_field.clear()
email_field.send_keys("tanaka@example.com")
# ③ Password を入力 (NAMEで探す)
password_field = driver.find_element(By.NAME, "password")
password_field.clear()
password_field.send_keys("SecurePass123")
# ④ Company を入力 (IDで探す)
company_field = driver.find_element(By.ID, "company")
company_field.clear()
company_field.send_keys("テスト株式会社")
# ⑤ Website を入力 (CSS Selectorで探す)
website_field = driver.find_element(By.CSS_SELECTOR, "#websitename")
website_field.clear()
website_field.send_keys("https://example.com")
# ⑥ Country をプルダウンから選択 (Selectクラスを使用)
country_select = Select(driver.find_element(By.NAME, "country"))
country_select.select_by_visible_text("Japan")
# ⑦ City を入力 (XPathで探す)
city_field = driver.find_element(By.XPATH, "//input[@id='inputCity']")
city_field.clear()
city_field.send_keys("東京")
# ⑧ Address 1 を入力 (CSS_SELECTORで探す)
address1_field = driver.find_element(By.CSS_SELECTOR, "input[name='address_line1']")
address1_field.clear()
address1_field.send_keys("渋谷区1-2-3")
# ⑨ Address 2 を入力 (IDで探す)
address2_field = driver.find_element(By.ID, "inputAddress2")
address2_field.clear()
address2_field.send_keys("テストビル4F")
# ⑩ State を入力 (IDで探す)
state_field = driver.find_element(By.ID, "inputState")
state_field.clear()
state_field.send_keys("Tokyo")
# ⑪ Zip code を入力 (XPATHで探す)
zip_field = driver.find_element(By.XPATH, "//input[@name='zip']")
zip_field.clear()
zip_field.send_keys("150-0001")
# ステップ4: Submitボタンをクリック
# Submitボタンがクリック可能になるまで待機
submit_button = wait.until(
EC.element_to_be_clickable((By.XPATH, "//button[text()='Submit']"))
)
# Submitボタンをクリック
submit_button.click()
# ステップ5: 画面に表示される値の結果の検証
# 成功メッセージが表示されるまで待機
success_message = wait.until(
EC.visibility_of_element_located((By.CLASS_NAME, "success-msg"))
)
time.sleep(10)
# メッセージテキストを取得
message_text = success_message.text
# 期待される成功メッセージを確認
if "Thanks for contacting us" in message_text:
print("OK: フォームが正常に送信されました!")
else:
print(f"NG: 予期しないメッセージ - {message_text}")
except Exception as e:
print(f"NG: エラーが発生しました: {e}")
finally:
# ステップ6: ブラウザを終了
driver.quit()
9. よくあるエラーと対処法
9.1 NoSuchElementException
エラーメッセージ:
selenium.common.exceptions.NoSuchElementException:
Message: no such element: Unable to locate element
原因:
- 要素が存在しない
- IDやクラス名が間違っている
- ページの読み込みが完了していない
解決方法:
- 開発者ツールで要素を確認する
- 待機処理を追加する
- 正しいロケーターを使用する
9.2 TimeoutException
エラーメッセージ:
selenium.common.exceptions.TimeoutException:
Message: Timeout waiting for element
原因:
- 要素の表示に時間がかかりすぎている
- 要素が実際には表示されない
解決方法:
- 待機時間を延長する
- 別の待機条件を試す
- 要素が本当に表示されるか確認する
10. まとめ
お疲れさまでした!
このチュートリアルを通じて、Seleniumの基礎から実践的な使い方まで学ぶことができました。
自動テストは、最初は手間に感じるかもしれません。
しかし、長期的には開発効率や品質の向上に必ずつながります。
生成AIが開発を加速させる時代だからこそ、確実に動作を確認できるテストコードの価値はますます高まっています。
今回学んだSeleniumを活用し、テストコードを作成して品質確保に貢献するとともに、実践を通じてさらに深い理解と技術を身につけていきましょう。