browsing-with-playwright
bilalmk/todo_correct
Playwright MCP を使用したブラウザの自動化。ウェブサイトの閲覧、フォームへの入力、要素のクリック、 スクリーンショットの撮影、データの抽出が可能です。ウェブ閲覧、フォーム送信、 ウェブスクレイピング、UI テスト、またはブラウザとのやり取りが必要なタスクに利用してください。静的な コンテンツの取得のみを行う場合は使用しないでください(その場合は curl や wget を使用してください)。
...すべて拡張します概要browsing-with-playwright
「browsing-with-playwright 」スキルは、Playwright MCPサーバーを通じてブラウザの自動化を実現し、実際のブラウザ操作を必要とするタスクにおいて、プログラムによってWebブラウザを制御できるようにします。 このスキルは、動的なWebコンテンツとのやり取り、フォームへの入力、ボタンのクリック、JavaScriptを多用するサイトからのデータ抽出、UIテストの実施といった課題を解決します。これらはすべて、単純なHTTPリクエストではJavaScriptを実行したりDOMとやり取りしたりできないため、対応しきれないシナリオです。
このスキルは、ナビゲーション、要素とのインタラクション(クリック、入力、フォームへの入力、ドロップダウンからの選択)、アクセシビリティスナップショットやスクリーンショットによるページ状態の確認、動的コンテンツの待機、JavaScriptの実行など、包括的なブラウザ制御機能を提供します。 共有ブラウザコンテキストを使用することで、複数の操作にわたってブラウザの状態を維持するため、アカウントへのログイン、複数ページにわたるフォームのナビゲーション、または操作を必要とするサイトからのデータスクレイピングといった、多段階のワークフローに適しています。MCPサーバーは、コマンドライン呼び出しを介して制御でき、アクセシビリティスナップショットを通じて特定された要素と対話することができます。
このスキルは、Webインタラクションの自動化が必要な開発者や自動化エンジニア、UIテストを行うQA担当者、動的なWebサイトからデータをスクレイピングするデータエンジニア、および実際のブラウザレンダリングとインタラクションを必要とするWebアプリケーションを扱うすべての人にとって理想的です。 フォームの送信、インターフェース上のクリック操作、動的コンテンツの読み込み待ち、あるいはブラウザのJavaScriptエンジンやレンダリング機能が必要なあらゆるシナリオを含むタスクには、本スキルをご利用ください。単純な静的コンテンツの取得については、curlやwgetなどの従来のツールの方が依然として効率的です。
よくある質問
単純なHTTPリクエストの代わりに、このスキルをいつ使用すべきですか?
JavaScriptの実行を必要とする動的なWebコンテンツとのやり取り、フォームへの入力、ボタンのクリック、コンテンツの読み込み待ち、またはブラウザベースの操作を行う必要がある場合は、このスキルを使用してください。ブラウザとのやり取りが不要な静的コンテンツの取得には、curlやwgetを使用してください。
--shared-browser-contextフラグはなぜ重要ですか?
--shared-browser-context フラグは、複数の mcp-client.py 呼び出しにわたってブラウザの状態(Cookie、localStorage、セッションデータ)を維持します。このフラグを指定しない場合、各呼び出しは新しいブラウザコンテキストで開始されるため、操作の間にログインセッションやその他の状態保持データが失われてしまいます。
ページ上の特定の要素とどのようにやり取りすればよいですか?
まず、browser_snapshot を使用してページのアクセシビリティツリーを取得します。これにより、要素への参照('e42'、'e15' など)が返されます。次に、これらの参照を browser_click、browser_type、browser_fill_form などの操作コマンドで使用し、特定の要素を指定します。
個々のコマンドではなく `browser_run_code` を使用すべき場合はいつですか?
原子的に(成功するか失敗するか一発で決まる)実行すべき複雑な多段階のワークフローには、`browser_run_code` を使用します。これは、個別の呼び出しを複数回行うよりも効率的であり、操作全体が一つの単位として成功するか失敗するかを確実にします。
Playwrightサーバーはいつ停止すべきですか?
ブラウザ自動化タスクが完了したら、リソースを解放するためにサーバーを停止してください。複数のブラウザタスクを順次実行する場合は、サーバーを実行し続けてください。ブラウザが応答しなくなった場合は、サーバーを停止して再起動してください。
すべてのファイル
6ファイルscripts/mcp-client.py16.9KB表示SKILL.md4.9KB表示scripts/stop-server.sh0.9KB表示references/playwright-tools.md20.7KB 表示 scripts/verify.py 0.5KB 表示 scripts/start-server.sh 0.7 KB 表示Automate browser interactions via Playwright MCP server.
Server Lifecycle
Start Server
# Using helper script (recommended)bash scripts/start-server.sh# Or manuallynpx @playwright/mcp@latest --port 8808 --shared-browser-context &
Stop Server
# Using helper script (closes browser first)bash scripts/stop-server.sh# Or manuallypython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_close -p '{}'pkill -f "@playwright/mcp"
When to Stop
- End of task: Stop when browser work is complete
- Long sessions: Keep running if doing multiple browser tasks
- Errors: Stop and restart if browser becomes unresponsive
Important: The --shared-browser-context flag is required to maintain browser state across multiple mcp-client.py calls. Without it, each call gets a fresh browser context.
Quick Reference
Navigation
# Go to URLpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_navigate \ -p '{"url": "https://example.com"}'# Go backpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_navigate_back -p '{}'
Get Page State
# Accessibility snapshot (returns element refs for clicking/typing)python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_snapshot -p '{}'# Screenshotpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_take_screenshot \ -p '{"type": "png", "fullPage": true}'
Interact with Elements
Use ref from snapshot output to target elements:
# Click elementpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_click \ -p '{"element": "Submit button", "ref": "e42"}'# Type textpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_type \ -p '{"element": "Search input", "ref": "e15", "text": "hello world", "submit": true}'# Fill form (multiple fields)python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_fill_form \ -p '{"fields": [{"ref": "e10", "value": "[email protected]"}, {"ref": "e12", "value": "password123"}]}'# Select dropdownpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_select_option \ -p '{"element": "Country dropdown", "ref": "e20", "values": ["US"]}'
Wait for Conditions
# Wait for text to appearpython3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_wait_for \ -p '{"text": "Success"}'# Wait for time (ms)python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_wait_for \ -p '{"time": 2000}'
Execute JavaScript
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_evaluate \ -p '{"function": "return document.title"}'Multi-Step Playwright Code
For complex workflows, use browser_run_code to run multiple actions in one call:
python3 scripts/mcp-client.py call -u http://localhost:8808 -t browser_run_code \ -p '{"code": "async (page) => { await page.goto(\"https://example.com\"); await page.click(\"text=Learn more\"); return await page.title(); }"}'Tip: Use browser_run_code for complex multi-step operations that should be atomic (all-or-nothing).
Workflow: Form Submission
- Navigate to page
- Get snapshot to find element refs
- Fill form fields using refs
- Click submit
- Wait for confirmation
- Screenshot result
Workflow: Data Extraction
- Navigate to page
- Get snapshot (contains text content)
- Use browser_evaluate for complex extraction
- Process results
Verification
Run: python3 scripts/verify.py
Expected: ✓ Playwright MCP server running
If Verification Fails
- Run diagnostic:
pgrep -f "@playwright/mcp" - Check: Server process running on port 8808
- Try:
bash scripts/start-server.sh - Stop and report if still failing - do not proceed with downstream steps
Tool Reference
See references/playwright-tools.md for complete tool documentation.
Troubleshooting
| Issue | Solution |
|---|---|
| Element not found | Run browser_snapshot first to get current refs |
| Click fails | Try browser_hover first, then click |
| Form not submitting | Use "submit": true with browser_type |
| Page not loading | Increase wait time or use browser_wait_for |
| Server not responding | Stop and restart: bash scripts/stop-server.sh && bash scripts/start-server.sh |
browsing-with-playwrightをインストール
スキルファイルをダウンロードし、.claude/skills/ ディレクトリに解凍してください。
ZIPをダウンロードリポジトリをクローンし、スキルファイルをプロジェクトにコピーしてください。
git clone https://github.com/bilalmk/todo_correct/blob/main/.claude/skills/mjs/browsing-with-playwright/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
コピー





家
