用 Codex Computer Use 检查落地页:链接、表单和窄屏练习

下载本地练习页面,按步骤检查坏链接、虚假成功提示和窄屏布局。提供修正版本、结果模板及已通过的离线测试,明确浏览器验收边界。

用 Codex Computer Use 检查落地页:链接、表单和窄屏练习

落地页检查需要可复现的问题记录,不能只得到一句“看起来没问题”。本练习提供一个虚构的本地页面,故意包含坏链接、没有保存数据却显示成功的表单,以及需要检查的窄屏布局;另有修正版本可重复对照。

下载 QA 练习包。它包含 Python 服务、两个页面版本、测试、结果模板和答案说明,界面为英文。本文没有声称已经完成真实浏览器操作或窄屏验收。

启动本地练习

安装 Python 3.9 或更高版本,解压后进入 qa-kit 目录:

python3 -B server.py --port 8876

服务只监听 127.0.0.1。在获准使用的浏览器中打开终端显示的网址。端口被占用时可选择空闲端口,并统一修改测试计划里的地址;这不适用于绕过已有的访问拒绝。练习完成后按 Ctrl-C 停止服务。

/ 是故障版本,/fixed 是修正版本,/submissions 显示本地接收记录。只用 @example.test 结尾的合成地址,不填真实联系方式,不产生购买或外部表单投递。

给检查任务,不先给答案

让 Codex 检查导航、表单和 1440、390、320 CSS 像素宽度下的布局。要求保留证据、写出预期与实际结果,不修改页面。初次检查不要把源码和答案说明交给测试者,避免把读到的实现误当成观察结果。

这仍是教学练习,不能作为盲测能力榜单。故障是人为植入的,少量样例不能推算真实网站缺陷检出率。

首轮检查直接使用这段指令

只把下面任务交给测试者,不要把本文后面的故障解析、源码或答案一起交给首轮测试者。不同环境的浏览器控制与权限界面可能不同,使用已经获准操作的浏览器。

检查本地练习页 http://127.0.0.1:8876/,不要读源码或答案,不修改页面。
记录浏览器版本、时间、URL及实际视口尺寸。
1. 保存 /submissions 当前记录作为本轮基线。
2. 点击 Working guide 和 Pricing,记录最终URL、标题及内容是否符合链接含义。
3. 分别测试空输入、not-an-email、qa-run1@example.test。
   每次记录界面反馈,刷新 /submissions 并保存接收结果。
4. 检查1440、390、320 CSS像素宽度下的遮挡、整页溢出及控件可操作性。
   无法设置或读取视口尺寸时,该项标pending,不凭外观猜尺寸。
5. 报告复现步骤、预期、实际和证据路径。未执行项标pending,不标通过。
6. 用新基线和qa-run2@example.test在 /fixed 重复流程。
7. 恢复临时视口设置,不填写真实联系方式。
访问被拒绝时停止并记录目标,不绕过。实际观察和推测分开。
不要把成功提示当保存凭据,也不要把桌面改宽度称为真机测试。

可以分别建 run-01/original/ 和 run-01/fixed/,放入 receiver-before.json、receiver-after.json、各视口截图与报告。这是建议的证据目录,不是本轮已经采集的文件。原版与修正版分开,才能看清修复后是否仍出现相同症状。

链接不只检查是否返回 200

分别点击 Working guide 与 Pricing,记录最终 URL 和页面标题,再返回测试页。404 是失败;链接能打开却到了不相关页面,也没有满足读者预期。修正后的 Pricing 应到虚构价格说明,而不是随便一个存在的路由。

表单分成三个用例

先在另一个标签页读取 /submissions,记录数量,再回到表单操作。每次提交后刷新接收记录并比较,避免用旧页面状态判断。

输入预期行为
空输入显示有用的校验反馈,不新增记录
not-an-email显示格式错误,不新增记录
qa-run1@example.test可见反馈,并且恰好新增一条匹配记录

修正页复测使用 qa-run2@example.test,之后每次使用不同合成地址。成功提示只能证明界面显示了这句话,不能证明线索已保存。记录数与具体地址必须一起核对,重复保存也应报告。

故障版源码故意显示成功但不写入数据。这是练习的预设行为,不代表浏览器测试已发现问题。实际报告必须区分预设答案与本次观察。

接收结果为什么不能只比较数量

下面的JSON是验收规则示例,不是浏览器采集结果:

{
  "before": [{"email": "old@example.test"}],
  "after": [
    {"email": "old@example.test"},
    {"email": "qa-run1@example.test"}
  ]
}

从一条增加到两条,只说明数量变了。还要核对旧记录没有改动,新增地址正好是本轮的地址。新增两个副本意味着重复提交;新增其他地址可能来自另一轮操作。实际检查时应保存完整记录及时间字段,不要为了套示例把证据删减成只剩邮箱。

空输入和格式错误应给出有效反馈且不新增记录;修正版有效地址应恰好增加一条匹配记录。界面与接收端成对检查,才能区分输入校验、虚假成功提示和真正保存。这不能直接证明其他生产表单可靠。

窄屏记录具体尺寸

在每个宽度下检查指标卡片、导航、输入框和按钮,观察是否横向溢出、文字被遮挡或控件难以操作。截图同时记录真实视口尺寸;没有尺寸的截图难以复现。

桌面浏览器改宽度只是视口模拟,不等于物理手机的触控、键盘、浏览器行为或性能测试。结束后恢复临时设置。

用原版与修正版建立检查矩阵

下表是依据源码得出的设计行为。运行后另填“实际结果”,不要把它当成已经发现的问题。

用例原版预设修正版预设需收集的证据
Pricing链接目标路由不存在打开虚构价格说明最终URL、标题;工具支持时记录HTTP状态
空或无效输入提示成功但未保存校验反馈且不新增界面反馈和刷新后的记录
有效合成地址提示成功但未保存新增一条匹配记录完整前后记录及本轮地址
窄屏指标行最小宽度650 CSS像素卡片允许换行实际视口、溢出与操作观察

390与320宽度下,还要尝试访问输入框和按钮。表格在自身容器内横向滚动,与整个文档横向溢出不是同一种情况。MDN overflow 文档解释容器溢出行为,但它不证明本练习已通过视觉检查。

把观察写成可复查的问题

每项记录应包含 URL、环境、输入、步骤、预期、实际与证据路径。空输入被接受、格式错误被接受、虚假成功提示可能来自同一个处理函数,不应为了数量拆成三个独立根因。

第一轮结束后再看答案,记录漏报与误报。用新地址对 /fixed 重复同样流程,再从新任务验证这些文字步骤是否足够让别人复现。

一份问题报告应具体到什么程度

下面的 FORM-01 是源码推导的教学示例,用于展示报告格式;没有虚构浏览器发现或截图。

项目填写示例
范围原版 /,问题ID FORM-01
前提保存接收记录,准备本轮唯一合成地址
步骤输入 qa-run1@example.test,提交一次,刷新 /submissions
预期旧记录不变,恰好新增一条匹配记录
源码预设原版显示成功但不写入记录
浏览器实际结果待执行后填写
证据待补前后接收记录和实际截图
待核实的影响用户可能误以为信息已保存
复测/fixed、新基线、qa-run2@example.test

实际报告中用观察结果替换预设行为,并附同一轮证据。无法读取接收端时,把持久化状态留为未核实,不从截图缺失或旧标签页状态推断后端故障。三个输入是三个测试用例,可能对应同一个根因;既保留覆盖面,也不夸大缺陷数。

检查没有明确结果时怎样排查

现象下一步避免误判
无法连接确认服务仍运行、地址与获准环境一致不直接判页面有问题
明确拒绝访问记录目标,按正常设置解决权限不换工具或主机绕过
终端提示端口占用停止自己不用的实例,或统一使用获准空闲端口端口更改不用于绕过拒绝
接收端有旧记录保存新基线,换本轮唯一地址不把旧数据算成本轮成功
显示成功但记录没变刷新接收端,保留两侧观察不连续点击造成重试混杂
截图像手机记录CSS视口和浏览器环境不冒称真机覆盖

服务写入本地 submissions.jsonl,重启不一定删除它。保留本轮文件;需要干净环境时使用另一个新解压副本。另一类浏览器任务可参考竞品调研教程,同样把观察事实与未解决字段分开。

已通过什么测试

在 Python 3.9.6 与 Node.js 24.13.0 下,七项进程内 Python 处理器测试和九项 JavaScript 表单模拟通过,重新解压后也通过。运行方式:

python3 -B -m unittest discover -s . -p 'test_*.py' -v
node test_form.mjs

Python 检查包括无效请求长度与 JSON、合成地址校验、记录写入、路由和模板替换。JavaScript 使用模拟的 document 与 fetch 执行表单代码。它们不启动浏览器,也不发送网络请求。

因此,这些结果不能证明布局正确、浏览器已发送请求或 Codex 已发现缺陷。三个视口截图及原版/修正版浏览器对照仍未核实。本练习也不能替代完整的可访问性、安全、性能或跨设备审计。

需要把“是否完成”写成代码,可继续看 Computer Use 离线控制器;浏览器连接问题见 权限排查。

常见问题

测试通过意味着浏览器验收完成了吗?
没有。通过的是七项 Python 处理器测试与九项 JavaScript 模拟,尚未验证真实浏览器操作、三个视口布局或缺陷检出情况。
怎样确认表单真的提交成功?
先保留接收端基线,再用本轮唯一的合成地址提交,核对旧记录不变且只多出一条匹配记录。成功提示只能说明界面显示了什么。
桌面浏览器改宽度算手机测试吗?
只能确认指定CSS视口下的布局,不能证明物理手机、触控、键盘及设备性能已经测试。
为什么修正版要换一个邮箱?
新地址和新基线能区分复测与旧记录,并暴露重复提交。应保留两轮各自的证据。