Selenium・Playwrightで使うDevTools入門|Elements・Console・Networkの使い方を解説

Selenium・Playwright でテストコードを書くとき、「どのセレクターを使えばいいか分からない」「要素がうまく取れない」と悩んだことはありませんか?ブラウザの開発者ツール(DevTools)を使いこなせると、その悩みの大半は解決できます。本記事ではQAエンジニアがテスト自動化で押さえておきたい DevTools の基礎を、実例つきで解説します。

📌 この記事の対象読者

✅ Selenium・Playwright を始めたばかりで、要素の特定方法がわからない方
✅ DevTools を開いたことはあるが、何を見ればいいか迷う方
✅ テストコードを書く前の「準備スキル」を整えたい QA エンジニア
✅ 手動テストのバグ調査を効率化したい方

✅ この記事を読むと得られること

  • QAエンジニアがよく使う4つのタブの役割が理解できる
  • Selenium・Playwright 向けのセレクターをその場で確認・コピーできるようになる
  • Network タブで API レスポンスを確認しテスト設計に活かせる
  • 手動テストのバグ調査スピードが上がる

👨‍💻 この記事の信頼性について

本記事は QA エンジニアとして15年以上、Selenium・Playwright を使ったテスト自動化に携わってきた筆者が執筆しています。「DevToolsを開いたはいいが何を見ればいいか分からなかった」という実際の経験をもとに、現場で本当に使う知識に絞って解説しています。

📌 この記事の結論

  • DevTools の Elements・Console・Network タブを使いこなすとテスト効率が大きく上がる
  • セレクターの確認は Elements タブ → 右クリック → Copy から始めると速い
  • Console タブの $$('セレクター') で要素の取得結果をその場で検証できる

「要素が見つからない」「どのセレクターを書けばいいか分からない」——テスト自動化を始めると必ずぶつかる壁です。実はその答えはほとんど、ブラウザの 開発者ツール(DevTools) の中にあります。

DevTools は Chrome・Edge・Firefox などのブラウザに標準搭載されている開発・デバッグ用のツールで、インストール不要でいつでも使えます。QA エンジニアにとっては「テストコードを書く前の準備ツール」として欠かせない存在です。

開発者ツール(DevTools)とは

DevTools とは、ブラウザに内蔵されている開発・デバッグ用のパネルです。Web ページの HTML 構造・CSS・JavaScript の動作・ネットワーク通信などをリアルタイムに確認できます。

DevTools の開き方

OS / ブラウザショートカットその他の方法
Windows / Chrome・EdgeF12 または Ctrl + Shift + I右クリック →「検証」
Mac / Chrome・SafariCmd + Option + I右クリック →「要素を検証」
FirefoxF12 または Ctrl + Shift + I右クリック →「要素を調査」

QA の現場では Chrome DevTools が最もよく使われます。Selenium や Playwright もデフォルトで Chromium ベースのブラウザを使うため、Chrome の操作感をそのまま活かせます。

① Elements タブ:要素を確認してセレクターを取得する

QA エンジニアが最も使うタブです。ページ上の HTML 構造を確認し、テストコードで使うセレクターをその場でコピーできます。

要素を素早く見つける方法

テストしたい要素(ボタン・入力フォームなど)を右クリック →「検証」を選ぶと、その要素が HTML ツリーでハイライト表示されます。

対象要素を右クリック「検証」を選択Elements タブで HTML が強調表示

セレクターをコピーする方法

Elements タブで対象の HTML 要素を右クリックすると、セレクターをワンクリックでコピーできます。

コピー方法取得できるものおすすめ度
Copy → Copy selectorCSS セレクター⭐⭐⭐(まずここから)
Copy → Copy XPathXPath(相対パス)⭐⭐(CSS で取れないとき)
Copy → Copy full XPathXPath(絶対パス)⭐(最終手段・壊れやすい)

⚠️ 注意:Copy full XPath は避けるのが無難

/html/body/div[2]/main/section[1]/form/input[3] のような絶対 XPath は、ページの HTML 構造が少し変わっただけで即壊れます。テスト保守コストが跳ね上がるため、id・name・data-testid 属性があればそちらを優先してください。

id や data-testid を確認する

Elements タブで HTML を確認すると、その要素が持つ属性(idnamedata-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 の結果の読み方

結果意味
<input id="email"...>✅ 要素が取得できている
null❌ セレクターが合っていない(querySelector)
[](空配列)❌ セレクターが合っていない($$・$x)
[input#email, input.email-field]⚠️ 複数ヒット→より絞り込む必要あり

③ Network タブ:API の通信内容を確認する

Network タブでは、ページが行っている HTTP 通信をリアルタイムで確認できます。フロントエンドと API の間のやり取りを把握するために欠かせないタブです。

テスト設計に使える Network タブの情報

確認できる情報テストへの活かし方
リクエスト URL・メソッドAPI テストのエンドポイントを特定できる
リクエストボディ送信しているパラメーターの形式・キー名を確認できる
レスポンスボディ期待値(正常/エラーレスポンス)のJSONを確認できる
ステータスコード200/400/401/500 などをテスト観点に落とし込める
レスポンス時間画面表示が遅い原因調査や性能確認に活用できる

Network タブの絞り込みフィルター

Network タブはすべての通信を表示するため、情報量が多くて最初は混乱しがちです。以下のフィルターを使うと見通しがよくなります。

フィルター用途
Fetch/XHRAPI 通信のみ表示。最もよく使うフィルター
DocHTML ページのリクエストのみ表示
Img・Media画像・動画ファイルのリクエスト
検索ボックスURL やキーワードで絞り込む(例:api/login

④ Application タブ:Cookie・Storage の状態を確認する

ログイン状態の保持やセッション管理のテストで役立つタブです。Cookie や LocalStorage の値をリアルタイムで確認・削除できます。

機能テストでの活用例
Cookiesセッショントークンの有無・有効期限を確認。削除してログアウト状態を再現
LocalStorageフロントエンドが保存する設定値・ユーザーデータを確認
SessionStorageタブを閉じるとリセットされる一時データを確認

DevTools を使っていてはまりやすいポイント

🚧 はまりポイント一覧

① DevTools を開いてから Network タブを見ると通信ログがない

Network タブは「開いている間の通信」しか記録しません。ページをリロードする前に DevTools を開くか、操作を再度実行してください。

② Copy selector でコピーした CSS が Selenium で動かない

Chrome が生成する CSS セレクターは #main > div:nth-child(2) > button のように構造依存になることがあります。id・name・data-testid など属性ベースのセレクターに書き換えると安定します。

③ Console で $$('.btn') は取れるがテストで要素が見つからない

動的に生成される要素は「ページ表示後しばらくして現れる」ことがあります。Selenium の WebDriverWait・Playwright の自動待機を使って要素の出現を待ちましょう。

④ iframe の中の要素が取れない

iframe 内部の HTML は別ドキュメントとして扱われるため、通常のページ要素と同じようには取得できません。Selenium では driver.switch_to.frame()、Playwright では frame_locator() を使う必要があります。詳細はそれぞれの公式ドキュメントを参照してください。

⑤ Network タブの XHR と Fetch が別々に表示されて混乱する

Chrome では「Fetch/XHR」フィルターを選ぶと両方まとめて表示されます。個別に「XHR」「Fetch」と分かれている場合はそれぞれクリックして確認してください。

テスト作業別・DevTool タブ活用マップ

やりたいこと使うタブ操作
要素の id・class を確認したいElements右クリック →「検証」
CSS セレクターをコピーしたいElements要素を右クリック → Copy → Copy selector
セレクターが正しく動くか確認したいConsole$$('セレクター') を実行
API のリクエスト・レスポンスを確認したいNetworkFetch/XHR フィルターで絞り込み
ログイン状態の Cookie を確認したいApplicationCookies → 対象ドメインを選択
エラー発生時の原因を調査したいConsole + Network赤いエラーメッセージ + 失敗リクエストを確認

よくある質問(FAQ)

Q. DevTools はどのブラウザを使えばいいですか?

テスト自動化目的なら Google Chrome が最もおすすめです。Selenium・Playwright のデフォルトブラウザが Chromium ベースであるため、DevTools での確認内容がそのままコードに活かせます。

Q. Elements タブと Console タブ、どちらでセレクターを確認すればいいですか?

まず Elements タブ で id・data-testid などの属性を確認し、そのセレクターを Console タブの $$('...') で動作確認するという 2 ステップが効率的です。

Q. Console の $$$$x の違いは何ですか?

$document.querySelector の省略形(1 件取得)、$$document.querySelectorAll の省略形(全件取得)、$x は XPath で取得します。これらは Chrome DevTools の Console 内で利用できるショートカットであり、JavaScript コードや Selenium・Playwright のコード内では使えません。なお $x は Chrome DevTools 固有の機能で、将来のバージョンで扱いが変わる可能性があります。

Q. Network タブで CORS エラーが出ていますが、テストに影響しますか?

CORS エラーはブラウザのセキュリティ制限によるもので、テスト自動化(Selenium・Playwright)には直接影響しないことが多いです。ただし API テストで別オリジンにリクエストする場合は、テスト環境の設定を確認することをおすすめします。

Q. Playwright の Codegen と DevTools はどちらを使うべきですか?

役割が異なります。Playwright Codegenplaywright codegen)はブラウザ操作を自動でコード化するツールで、コード量を減らしたいときに便利です。DevTools は「手動テストのバグ調査」「セレクターの事前検証」「API レスポンスの確認」など幅広い場面で使います。両方を組み合わせるのがおすすめです。

Q. DevTools で確認したセレクターが本番環境では動かないことがありますか?

あります。特に id がランダム生成される場合や、動的に付与されるクラス名(例:CSS Modules の Button_btn__abc123)は環境やビルドによって変わります。data-testid のようなテスト用に固定した属性を開発者に追加してもらうのがベストプラクティスです。

Q. Chrome DevTools と Edge DevTools に違いはありますか?

ほぼ同じです。Edge も Chromium ベースのため、Elements・Console・Network など主要機能は共通です。Selenium や Playwright の確認用途であればどちらを使っても問題ありません。

まとめ

  • Elements タブ:HTML 構造の確認・CSS セレクター / XPath のコピーに使う
  • Console タブ$$('セレクター') でセレクターの動作をその場で検証できる
  • Network タブ:Fetch/XHR フィルターで API 通信の内容(URL・ボディ・レスポンス)を確認
  • Application タブ:Cookie・LocalStorage でログイン状態・セッションを確認・リセット
  • 「Copy full XPath」は壊れやすいため、iddata-testid 属性を優先する

DevTools はインストール不要で、今すぐブラウザを開けば使えます。Selenium・Playwright のコードを書く前に「まず DevTools で確認する」という習慣をつけるだけで、テストコードの品質とデバッグ効率が大きく変わります。ぜひ日常的なテスト作業の相棒にしてみてください。

💡 Playwright ユーザーへの補足:より安定したロケーターを使おう

Playwright では page.locator("#email") のほか、以下のロケーターが推奨されています。DevTools で要素の role・label・testid を確認した上で使い分けましょう。

ロケーター使いどころ
page.get_by_role("button", name="送信")ボタン・リンクなどの役割で取得
page.get_by_label("メールアドレス")label に紐づいた入力フォーム
page.get_by_test_id("login-email")data-testid 属性で取得(最も安定)

📚 あわせて読みたい関連記事

タイトルとURLをコピーしました