用途:测试本地 Web 应用。资料要求编写原生 Python Playwright 脚本进行测试,并提供一个辅助脚本 scripts/with_server.py 管理服务器生命周期,支持同时管理多个服务器。使用脚本时应先运行 --help 查看用法,不建议直接阅读源码,原因是脚本可能很大、会污染上下文窗口,应将其作为黑盒脚本调用。
选择测试方式:先判断任务是否为静态 HTML。若是,可直接读取 HTML 文件识别选择器,成功则编写使用该选择器的 Playwright 脚本,失败或不完整则按动态应用处理。若为动态 Web 应用,先确认服务器是否已在运行:未运行则先执行 python scripts/with_server.py --help,再用该辅助脚本配合简化后的 Playwright 脚本;已运行则采用先侦察后行动的模式,即导航并等待 networkidle、截图或检查 DOM、从渲染状态识别选择器、再用发现的选择器执行操作。
启动服务器示例:单服务器使用 python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py;多服务器则多次传入 --server 与 --port。自动化脚本中只写 Playwright 逻辑,服务器由辅助脚本自动管理,示例使用 sync_playwright、以无头模式启动 chromium、goto 本地地址、并先用 page.wait_for_load_state('networkidle') 等待 JS 执行,最后关闭浏览器。
侦察阶段可截图、读取 page.content()、用 page.locator('button').all() 等检查渲染后的 DOM,再据此确定选择器并执行操作。常见错误是在动态应用上未等待 networkidle 就检查 DOM。
最佳实践:把捆绑脚本当黑盒使用,先用 --help 查看用法再直接调用;使用同步 sync_playwright();结束时关闭浏览器;使用描述性选择器如 text=、role=、CSS 选择器或 ID;添加 page.wait_for_selector() 或 page.wait_for_timeout() 等等待。参考文件 examples/ 下提供 element_discovery.py、static_html_automation.py、console_logging.py 等常见模式示例。