Loading...
Loading...
Compare original and translation side by side
| 모드 | 트리거 | 동작 |
|---|---|---|
| | 생성 + 실행 + 자동수정 루프 |
| | 시나리오 생성만 |
| | 실행 + 자동수정 루프 |
| 模式 | 触发方式 | 操作 |
|---|---|---|
| | 生成+执行+自动修正循环 |
| | 仅生成场景 |
| | 执行+自动修正循环 |
| 용도 | 도구 |
|---|---|
| 시나리오 실행 | |
| 셀렉터 디버깅/DOM 확인 | |
| iframe 디버깅 | |
| 문법 검증 | |
| 用途 | 工具 |
|---|---|
| 场景执行 | |
| 选择器调试/DOM检查 | |
| iframe调试 | |
| 语法验证 | |
./e2e.sh status./e2e.sh runagent-browser evalagent-browseropen -a./e2e.sh status./e2e.sh runagent-browser evalagent-browseropen -acd e2e && ./e2e.sh setupsetupcd e2e && ./e2e.sh chrome &sleep 4cd e2e && ./e2e.sh statuscd e2e && ./e2e.sh chromecd e2e && ./e2e.sh status탭 번호는 0번부터 시작.탭은 제외.chrome://가[번호]의 N과 동일. 사용자가 로그인한 탭을 그대로 사용. 환경(local/test/prod) 구분 없음. 탭 번호를 받기 전에는 실행하지 않는다. 민감 세션 작업은 탭 번호를 받아도 사용자 승인 전까지 분석만 수행한다. 탭 드리프트 방지: 사용자가 탭 번호를 응답한 뒤--tab N직후agent-browser tab N로 탭이 맞는지 재검증한다. 예상과 다르면agent-browser eval "document.title + ' | ' + location.href"재출력 후 재선택. 디버깅/재현 시에는./e2e.sh status고정 권장. (상세:E2E_TAB_ID)peach-e2e-browse/references/탭-선택-패턴.md
파일 업로드 시나리오: 시나리오 코드에서또는 file input 조작이 필요하면 OS 네이티브 파일 다이얼로그 차단을 위해page.setInputFiles()방식을 사용한다. CDP Escape /Page.setInterceptFileChooserDialog로는 macOS 네이티브 다이얼로그를 닫을 수 없다. (상세:agent-browser press Escape)peach-e2e-browse/references/SPA-프레임워크-입력패턴.md §3
cd e2e && ./e2e.sh setupsetupcd e2e && ./e2e.sh chrome &sleep 4cd e2e && ./e2e.sh statuscd e2e && ./e2e.sh chromecd e2e && ./e2e.sh status标签页编号从0开始。排除标签页。chrome://与[编号]中的N一致。 直接使用用户已登录的标签页,不区分环境(local/test/prod)。 在收到标签页编号前不得执行。敏感会话任务即使收到标签页编号,也需在用户批准前仅进行分析。 防止标签页漂移:用户回复标签页编号后,执行--tab N,紧接着 通过agent-browser tab N重新验证标签页是否正确。 若与预期不符,重新输出agent-browser eval "document.title + ' | ' + location.href"并让用户重新选择。调试/复现阶段建议固定./e2e.sh status。 (详情:E2E_TAB_ID)peach-e2e-browse/references/标签页选择模式.md
文件上传场景:若场景代码中需要或操作文件输入框, 为拦截OS原生文件对话框,需使用page.setInputFiles()方式。 CDP Escape /Page.setInterceptFileChooserDialog无法关闭macOS原生对话框。 (详情:agent-browser press Escape)peach-e2e-browse/references/SPA框架输入模式.md §3
e2e/시나리오/references/시나리오-생성-패턴.mdreferences/코드패턴.mdreferences/변환규칙.mdreferences/프레임워크-대응.mdnode --check./e2e.sh run./e2e.sh run --tab N 시나리오/경로e2e/场景/references/场景生成模式.mdreferences/代码模式.mdreferences/转换规则.mdreferences/框架适配.mdnode --check./e2e.sh run./e2e.sh run --tab N 场景/路径references/시나리오-생성-패턴.mdreferences/코드패턴.mdreferences/변환규칙.mdreferences/코드패턴.mdchromium.launch()connect()page.goto('/path')page.goto()browser.close()context.close()page.pause()setDialogHandlerprocess.exit(0)waitForTimeoutwaitForEvent('popup')waitForEvent('close')node --checke2e/시나리오/{저장위치}/{카테고리}/{이름}.jsreferences/场景生成模式.mdreferences/代码模式.mdreferences/转换规则.mdreferences/代码模式.mdchromium.launch()connect()page.goto('/path')page.goto()browser.close()context.close()page.pause()setDialogHandlerprocess.exit(0)waitForTimeoutwaitForEvent('popup')waitForEvent('close')node --checke2e/场景/{保存位置}/{分类}/{名称}.jscd e2e && ./e2e.sh listcd e2e && ./e2e.sh run --tab N 시나리오/경로cd e2e && ./e2e.sh listcd e2e && ./e2e.sh run --tab N 场景/路径❌ 에러:references/자동수정-판단트리.md❌ 错误:references/自动修正判断树.md| 에러 유형 | 처리 방법 |
|---|---|
| 셀렉터 불일치 (timeout, locator not found) | agent-browser eval로 실제 DOM 확인 → 시나리오 셀렉터 수정 |
dialog 자동 닫힘 ( | daemon 잔류 확인 후 kill → |
popup | |
URL 패턴 불일치 ( | 실제 이동 URL 확인 → 패턴 수정 |
타이밍 문제 ( | 고정 대기 → |
| 팝업/탭이 예상보다 일찍 닫힘 → |
| navigation timeout (AJAX submit) | waitForNavigation 제거 또는 waitForURL로 교체 |
| 서버 에러 (500, 네트워크 에러) | 자동수정 불가 → 사용자에게 보고 후 중단 |
| 错误类型 | 处理方式 |
|---|---|
| 选择器不匹配(timeout、locator not found) | 通过agent-browser eval检查实际DOM → 修改场景选择器 |
对话框自动关闭( | 检查是否存在残留daemon并kill → 若未应用 |
弹窗 | 应用 |
URL模式不匹配( | 检查实际跳转URL → 修改模式 |
时序问题( | 将固定等待 → 替换为 |
| 弹窗/标签页比预期提前关闭 → 添加 |
| navigation timeout(AJAX提交) | 删除waitForNavigation或替换为waitForURL |
| 服务器错误(500、网络错误) | 无法自动修正 → 向用户报告后终止 |
1. 에러 메시지 파싱 → 유형 판별
2. agent-browser eval로 실제 DOM/URL 확인
3. 시나리오 스크립트 수정
4. 재실행
5. 여전히 실패? → 1로 돌아감 (최대 3회)
6. 3회 실패 → 에러 이력 요약 → 사용자에게 보고 → peach-e2e-browse 안내1. 解析错误消息 → 判断类型
2. 通过agent-browser eval检查实际DOM/URL
3. 修改场景脚本
4. 重新执行
5. 仍失败? → 返回步骤1(最多3次)
6. 3次失败 → 汇总错误历史 → 向用户报告 → 引导使用peach-e2e-browseE2E_TAB_ID=<id> ./e2e.sh run '시나리오/대상.js'dialog 관련 오류라면 실행 전 반드시 daemon 잔류 확인:bashlsof -iTCP:9222 -sTCP:ESTABLISHED -n -P | awk '/node/{print $2}' | xargs kill -9 2>/dev/null
E2E_TAB_ID=<id> ./e2e.sh run '场景/目标.js'若为对话框相关错误,执行前必须检查是否存在残留daemon:bashlsof -iTCP:9222 -sTCP:ESTABLISHED -n -P | awk '/node/{print $2}' | xargs kill -9 2>/dev/null
undefinedundefined
> iframe 내부 디버깅은 agent-browser로 불가 → playwright-cli fallback:
> ```bash
> ./e2e/pwc.sh eval "document.querySelector('iframe[src*=target]').contentDocument.querySelector('#element').innerText"
> ```
> iframe内部调试无法使用agent-browser → 改用playwright-cli备选方案:
> ```bash
> ./e2e/pwc.sh eval "document.querySelector('iframe[src*=target]').contentDocument.querySelector('#element').innerText"
> ```window.alert/confirmpage.on('dialog', handler)connect.jssetDialogHandler(page, prevHandler, newHandler)page.on('dialog')waitForEvent('popup')connect.jsprocess.exit(0)try/catch/finally + exitCodewaitForTimeoutpage.waitForEvent('dialog')peach-e2e-browse/references/native-dialog-주의사항.mdwindow.alert/confirmpage.on('dialog', handler)connect.jssetDialogHandler(page, prevHandler, newHandler)page.on('dialog')waitForEvent('popup')connect.jsprocess.exit(0)try/catch/finally + exitCodepage.waitForEvent('dialog')waitForTimeoutpeach-e2e-browse/references/原生对话框注意事项.mdload + 2초 지연 + 직접 이동 fallbackpeach-e2e-browse/references/외부서비스-링크전환-패턴.mdload + 2秒延迟 + 直接跳转备选peach-e2e-browse/references/外部服务链接跳转模式.md--tab NE2E_TAB_IDundefined--tab NE2E_TAB_IDundefined
상세: `peach-e2e-browse/references/탭-선택-패턴.md` 참조
详情参考:`peach-e2e-browse/references/标签页选择模式.md`lib/connect.jsconnect()nodebunclick()node --checklib/connect.jsconnect()nodebunclick()node --check| 문서 | 용도 | 로드 조건 |
|---|---|---|
| 시나리오 기본 구조 (IIFE, exitCode, 이모지) | create, auto |
| codegen → CDP 변환 규칙 | codegen 입력 시 |
| 레거시/모던 프레임워크 분기 | create, auto |
| 기존 코드 참조 기반 생성 가이드 | create, auto |
| form validation 우회 패턴 | create, auto |
| 에러 유형별 자동수정 전략 | run, auto 실패 시 |
| CDP daemon 문제 해결 | dialog 에러 시 |
| native dialog 처리 메커니즘 | dialog 시나리오 |
| 文档 | 用途 | 加载条件 |
|---|---|---|
| 场景基础结构(IIFE、exitCode、表情) | create、auto |
| codegen → CDP转换规则 | codegen输入时 |
| 遗留/现代框架分支处理 | create、auto |
| 基于现有代码参考的生成指南 | create、auto |
| 表单验证绕过模式 | create、auto |
| 错误类型专属自动修正策略 | run、auto失败时 |
| CDP daemon问题解决 | 对话框错误时 |
| 原生对话框处理机制 | 对话框场景 |