옵션
집 Skill 브라우저 자동화 browsing-with-playwright

browsing-with-playwright

bilalmk/todo_correct bilalmk/todo_correct

Playwright MCP를 활용한 브라우저 자동화. 웹사이트 탐색, 양식 작성, 요소 클릭, 스크린샷 촬영 및 데이터 추출이 가능합니다. 웹 브라우징, 양식 제출, 웹 스크래핑, UI 테스트 또는 브라우저와의 상호작용이 필요한 작업에 사용하십시오. 정적 콘텐츠만 가져오는 경우에는 사용하지 마십시오(이 경우 curl/wget을 사용하십시오).

...모든 것을 확장하십시오
15
업데이트 된 시간 2026년 8월 25일

소개 browsing-with-playwright

browsing-with-playwright 스킬은 Playwright MCP 서버를 통해 브라우저 자동화를 지원하여, 실제 브라우저 상호작용이 필요한 작업에 대해 웹 브라우저를 프로그래밍 방식으로 제어할 수 있게 해줍니다. 이 스킬은 동적 웹 콘텐츠와 상호작용하거나, 양식을 작성하거나, 버튼을 클릭하거나, JavaScript가 많이 사용된 사이트에서 데이터를 추출하거나, UI 테스트를 수행해야 하는 문제를 해결해 줍니다. 이러한 모든 시나리오에서는 단순한 HTTP 요청만으로는 JavaScript를 실행하거나 DOM과 상호작용할 수 없어 한계가 있습니다.

이 스킬은 탐색, 요소 상호 작용(클릭, 입력, 양식 작성, 드롭다운 선택), 접근성 스냅샷 및 스크린샷을 통한 페이지 상태 확인, 동적 콘텐츠 대기, 자바스크립트 실행 등 포괄적인 브라우저 제어 기능을 제공합니다. 이 스킬은 공유 브라우저 컨텍스트를 사용하여 여러 작업에 걸쳐 브라우저 상태를 유지하므로, 계정 로그인, 다중 페이지 양식 이동, 상호작용이 필요한 사이트에서 데이터 추출과 같은 다단계 워크플로우에 적합합니다. MCP 서버는 명령줄 호출을 통해 제어할 수 있으며, 이를 통해 접근성 스냅샷으로 식별된 특정 요소와 상호작용할 수 있습니다.

이 스킬은 웹 상호 작용을 자동화해야 하는 개발자 및 자동화 엔지니어, UI 테스트를 수행하는 QA 전문가, 동적 웹사이트에서 데이터를 추출하는 데이터 엔지니어, 그리고 실제 브라우저 렌더링 및 상호 작용이 필요한 웹 애플리케이션을 다루는 모든 사용자에게 이상적입니다. 양식 제출, 인터페이스 클릭, 동적 콘텐츠 로딩 대기, 또는 브라우저의 자바스크립트 엔진과 렌더링 기능이 필요한 모든 시나리오에서 이 스킬을 사용하십시오. 단순한 정적 콘텐츠 가져오기의 경우, curl이나 wget과 같은 기존 도구가 여전히 더 효율적입니다.

자주 묻는 질문

단순한 HTTP 요청 대신 이 스킬을 언제 사용해야 하나요?

자바스크립트 실행이 필요한 동적 웹 콘텐츠와 상호작용하거나, 양식을 작성하거나, 버튼을 클릭하거나, 콘텐츠가 로드될 때까지 기다리거나, 브라우저 기반의 상호작용을 수행해야 할 때 이 스킬을 사용하세요. 브라우저 상호작용이 필요 없는 정적 콘텐츠를 가져올 때는 curl이나 wget을 사용하세요.

--shared-browser-context 플래그가 중요한 이유는 무엇인가요?

--shared-browser-context 플래그는 여러 번의 mcp-client.py 호출 간에 브라우저 상태(쿠키, 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.py0.5KB보기 scripts/start-server.sh0.7 KB보기
GitHub에서 보기

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

  1. Navigate to page
  2. Get snapshot to find element refs
  3. Fill form fields using refs
  4. Click submit
  5. Wait for confirmation
  6. Screenshot result

Workflow: Data Extraction

  1. Navigate to page
  2. Get snapshot (contains text content)
  3. Use browser_evaluate for complex extraction
  4. Process results

Verification

Run: python3 scripts/verify.py

Expected: ✓ Playwright MCP server running

If Verification Fails

  1. Run diagnostic: pgrep -f "@playwright/mcp"
  2. Check: Server process running on port 8808
  3. Try: bash scripts/start-server.sh
  4. Stop and report if still failing - do not proceed with downstream steps

Tool Reference

See references/playwright-tools.md for complete tool documentation.

Troubleshooting

IssueSolution
Element not foundRun browser_snapshot first to get current refs
Click failsTry browser_hover first, then click
Form not submittingUse "submit": true with browser_type
Page not loadingIncrease wait time or use browser_wait_for
Server not respondingStop 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

복사 복사
빠른 설정: skill 폴더를 .claude/skills/로 복사하면 Claude가 해당 스킬을 자동으로 감지하여 사용합니다.

관련 스킬

playwright-cli
업데이트 된 시간 2026년 6월 29일
frontend-testing-best-practices
업데이트 된 시간 2026년 7월 7일
Playwright Browser Automation
업데이트 된 시간 2026년 6월 29일
playwright-generate-test
업데이트 된 시간 2026년 6월 29일
OR