Selenium・Playwright でテストコードを書くとき、「どのセレクターを使えばいいか分からない」「要素がうまく取れない」と悩んだことはありませんか?ブラウザの開発者ツール(DevTools)を使いこなせると、その悩みの大半は解決できます。本記事ではQAエンジニアがテスト自動化で押さえておきたい DevTools の基礎を、実例つきで解説します。
📌 この記事の対象読者
| ✅ Selenium・Playwright を始めたばかりで、要素の特定方法がわからない方 |
| ✅ DevTools を開いたことはあるが、何を見ればいいか迷う方 |
| ✅ テストコードを書く前の「準備スキル」を整えたい QA エンジニア |
| ✅ 手動テストのバグ調査を効率化したい方 |
✅ この記事を読むと得られること
|
👨💻 この記事の信頼性について 本記事は QA エンジニアとして15年以上、Selenium・Playwright を使ったテスト自動化に携わってきた筆者が執筆しています。「DevToolsを開いたはいいが何を見ればいいか分からなかった」という実際の経験をもとに、現場で本当に使う知識に絞って解説しています。 |
📌 この記事の結論
|
「要素が見つからない」「どのセレクターを書けばいいか分からない」——テスト自動化を始めると必ずぶつかる壁です。実はその答えはほとんど、ブラウザの 開発者ツール(DevTools) の中にあります。
DevTools は Chrome・Edge・Firefox などのブラウザに標準搭載されている開発・デバッグ用のツールで、インストール不要でいつでも使えます。QA エンジニアにとっては「テストコードを書く前の準備ツール」として欠かせない存在です。
開発者ツール(DevTools)とは
DevTools とは、ブラウザに内蔵されている開発・デバッグ用のパネルです。Web ページの HTML 構造・CSS・JavaScript の動作・ネットワーク通信などをリアルタイムに確認できます。
DevTools の開き方
| OS / ブラウザ | ショートカット | その他の方法 |
|---|---|---|
| Windows / Chrome・Edge | F12 または Ctrl + Shift + I | 右クリック →「検証」 |
| Mac / Chrome・Safari | Cmd + Option + I | 右クリック →「要素を検証」 |
| Firefox | F12 または Ctrl + Shift + I | 右クリック →「要素を調査」 |
QA の現場では Chrome DevTools が最もよく使われます。Selenium や Playwright もデフォルトで Chromium ベースのブラウザを使うため、Chrome の操作感をそのまま活かせます。
① Elements タブ:要素を確認してセレクターを取得する
QA エンジニアが最も使うタブです。ページ上の HTML 構造を確認し、テストコードで使うセレクターをその場でコピーできます。
要素を素早く見つける方法
テストしたい要素(ボタン・入力フォームなど)を右クリック →「検証」を選ぶと、その要素が HTML ツリーでハイライト表示されます。
| 対象要素を右クリック | → | 「検証」を選択 | → | Elements タブで HTML が強調表示 |
セレクターをコピーする方法
Elements タブで対象の HTML 要素を右クリックすると、セレクターをワンクリックでコピーできます。
| コピー方法 | 取得できるもの | おすすめ度 |
|---|---|---|
| Copy → Copy selector | CSS セレクター | ⭐⭐⭐(まずここから) |
| Copy → Copy XPath | XPath(相対パス) | ⭐⭐(CSS で取れないとき) |
| Copy → Copy full XPath | XPath(絶対パス) | ⭐(最終手段・壊れやすい) |
⚠️ 注意:Copy full XPath は避けるのが無難 |
id や data-testid を確認する
Elements タブで HTML を確認すると、その要素が持つ属性(id・name・data-testid など)が一目でわかります。
<input id="email"
name="email"
data-testid="login-email"
type="email"
placeholder="メールアドレス">この場合、Selenium・Playwright のコードでは以下のように書けます。
# Selenium の場合
driver.find_element(By.ID, "email")
driver.find_element(By.CSS_SELECTOR, "[data-testid='login-email']")
# Playwright の場合
page.get_by_test_id("login-email")
page.locator("#email")② Console タブ:セレクターをその場で検証する
Console タブでは JavaScript を直接実行できます。「このセレクターで本当に要素が取れるか?」をテストコードを書く前にその場で確認するのに使います。
セレクター検証コマンド早見表
# CSS セレクターで1つ取得(最初の1件のみ)
document.querySelector('.submit-btn')
# CSS セレクターで全件取得(フルで書く場合)
document.querySelectorAll('.list-item')
# Chrome DevTools のショートカット(DevTools Console 内でのみ使用可)
$$('.list-item') # document.querySelectorAll の省略形
$x('//button[@type="submit"]') # XPath で取得
# 属性値を確認する
document.querySelector('#email').getAttribute('data-testid') $$('.list-item') の結果が空配列 [] なら「そのセレクターでは要素が取れていない」サインです。セレクターを修正して再確認できます。
💡 Console の結果の読み方
|
③ Network タブ:API の通信内容を確認する
Network タブでは、ページが行っている HTTP 通信をリアルタイムで確認できます。フロントエンドと API の間のやり取りを把握するために欠かせないタブです。
テスト設計に使える Network タブの情報
| 確認できる情報 | テストへの活かし方 |
|---|---|
| リクエスト URL・メソッド | API テストのエンドポイントを特定できる |
| リクエストボディ | 送信しているパラメーターの形式・キー名を確認できる |
| レスポンスボディ | 期待値(正常/エラーレスポンス)のJSONを確認できる |
| ステータスコード | 200/400/401/500 などをテスト観点に落とし込める |
| レスポンス時間 | 画面表示が遅い原因調査や性能確認に活用できる |
Network タブの絞り込みフィルター
Network タブはすべての通信を表示するため、情報量が多くて最初は混乱しがちです。以下のフィルターを使うと見通しがよくなります。
| フィルター | 用途 |
|---|---|
| Fetch/XHR | API 通信のみ表示。最もよく使うフィルター |
| Doc | HTML ページのリクエストのみ表示 |
| Img・Media | 画像・動画ファイルのリクエスト |
| 検索ボックス | URL やキーワードで絞り込む(例:api/login) |
④ Application タブ:Cookie・Storage の状態を確認する
ログイン状態の保持やセッション管理のテストで役立つタブです。Cookie や LocalStorage の値をリアルタイムで確認・削除できます。
| 機能 | テストでの活用例 |
|---|---|
| Cookies | セッショントークンの有無・有効期限を確認。削除してログアウト状態を再現 |
| LocalStorage | フロントエンドが保存する設定値・ユーザーデータを確認 |
| SessionStorage | タブを閉じるとリセットされる一時データを確認 |
DevTools を使っていてはまりやすいポイント
🚧 はまりポイント一覧 ① DevTools を開いてから Network タブを見ると通信ログがない Network タブは「開いている間の通信」しか記録しません。ページをリロードする前に DevTools を開くか、操作を再度実行してください。 ② Copy selector でコピーした CSS が Selenium で動かない Chrome が生成する CSS セレクターは ③ Console で 動的に生成される要素は「ページ表示後しばらくして現れる」ことがあります。Selenium の WebDriverWait・Playwright の自動待機を使って要素の出現を待ちましょう。 ④ iframe の中の要素が取れない iframe 内部の HTML は別ドキュメントとして扱われるため、通常のページ要素と同じようには取得できません。Selenium では ⑤ Network タブの XHR と Fetch が別々に表示されて混乱する Chrome では「Fetch/XHR」フィルターを選ぶと両方まとめて表示されます。個別に「XHR」「Fetch」と分かれている場合はそれぞれクリックして確認してください。 |
テスト作業別・DevTool タブ活用マップ
| やりたいこと | 使うタブ | 操作 |
|---|---|---|
| 要素の id・class を確認したい | Elements | 右クリック →「検証」 |
| CSS セレクターをコピーしたい | Elements | 要素を右クリック → Copy → Copy selector |
| セレクターが正しく動くか確認したい | Console | $$('セレクター') を実行 |
| API のリクエスト・レスポンスを確認したい | Network | Fetch/XHR フィルターで絞り込み |
| ログイン状態の Cookie を確認したい | Application | Cookies → 対象ドメインを選択 |
| エラー発生時の原因を調査したい | Console + Network | 赤いエラーメッセージ + 失敗リクエストを確認 |
よくある質問(FAQ)
テスト自動化目的なら Google Chrome が最もおすすめです。Selenium・Playwright のデフォルトブラウザが Chromium ベースであるため、DevTools での確認内容がそのままコードに活かせます。
まず Elements タブ で id・data-testid などの属性を確認し、そのセレクターを Console タブの $$('...') で動作確認するという 2 ステップが効率的です。
$・$$・$x の違いは何ですか? $ は document.querySelector の省略形(1 件取得)、$$ は document.querySelectorAll の省略形(全件取得)、$x は XPath で取得します。これらは Chrome DevTools の Console 内で利用できるショートカットであり、JavaScript コードや Selenium・Playwright のコード内では使えません。なお $x は Chrome DevTools 固有の機能で、将来のバージョンで扱いが変わる可能性があります。
CORS エラーはブラウザのセキュリティ制限によるもので、テスト自動化(Selenium・Playwright)には直接影響しないことが多いです。ただし API テストで別オリジンにリクエストする場合は、テスト環境の設定を確認することをおすすめします。
役割が異なります。Playwright Codegen(playwright codegen)はブラウザ操作を自動でコード化するツールで、コード量を減らしたいときに便利です。DevTools は「手動テストのバグ調査」「セレクターの事前検証」「API レスポンスの確認」など幅広い場面で使います。両方を組み合わせるのがおすすめです。
あります。特に id がランダム生成される場合や、動的に付与されるクラス名(例:CSS Modules の Button_btn__abc123)は環境やビルドによって変わります。data-testid のようなテスト用に固定した属性を開発者に追加してもらうのがベストプラクティスです。
ほぼ同じです。Edge も Chromium ベースのため、Elements・Console・Network など主要機能は共通です。Selenium や Playwright の確認用途であればどちらを使っても問題ありません。
まとめ
|
DevTools はインストール不要で、今すぐブラウザを開けば使えます。Selenium・Playwright のコードを書く前に「まず DevTools で確認する」という習慣をつけるだけで、テストコードの品質とデバッグ効率が大きく変わります。ぜひ日常的なテスト作業の相棒にしてみてください。
💡 Playwright ユーザーへの補足:より安定したロケーターを使おう Playwright では
|
📚 あわせて読みたい関連記事 |
