简而言之:使用page.locator(selector).fill(value)实现快速、确定性的 Puppeteer 表单提交脚本,并page.type()当页面监听真实键盘输入(自动完成、反机器人、实时验证)时。可通过点击按钮、按 Enter 键或调用form.requestSubmit(),并始终等待具体的成功信号,而非设定固定超时。
表单是大多数实用网页实际运作的核心。登录、搜索栏、结账流程、文件上传器、多步骤引导向导:如果你为了测试或爬取而自动化操作网页,迟早都要处理表单。 Puppeteer 的表单提交工作流乍看之下简单得令人心生侥幸,但很快就会撞上现代网站的现实壁垒:单页应用的重新渲染、隐藏的陷阱、仅显示标签的输入框、被 iframe 困住的编辑器,以及那些因从未检测到真实的 keydown 事件。
HTML表单本质上是一个 <form> 元素,用于包裹 <input>, <select>, <textarea>及类似控件,带有 action 属性,并带有提交触发器,用于将收集的数据发送处理。这只是简单的一半。困难的一半在于让无头 Chrome 脚本表现得足够像真人,以使页面真正接受提交并返回可用的响应。
本指南是我当初开始将 Puppeteer 脚本部署到生产环境时,就希望拥有的速查表。我们将选择合适的 API 进行类型定义,锁定稳定的选择器,逐步讲解三种提交策略及其失效情形,涵盖所有常见输入类型(包括自定义文件选择器和富文本编辑器),等待正确的成功信号,验证结果,并以针对令人头疼的“无声失败”的调试检查清单作为结尾。




