04Bread Browser · 第 4 章
总进度 25 / 33

把浏览器动作接成循环

ch02 点击登录链接后就结束了。若要完成登录,还需要填写、提交并检查结果:

2026-09-28约 60 分钟330 行代码难度 ★★★

如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。

1. 点击之后,还要接着做

ch02 点击登录链接后就结束了。若要完成登录,还需要填写、提交并检查结果:

任务:登录 quotes.toscrape.com(用户名 admin / 密码 1234)

需要至少 4-5 步:

  1. 点 Login 链接
  2. 填用户名
  3. 填密码
  4. 点 Submit
  5. 验证 Logout 出现(= 登录成功)

每一步做完之后页面会变——LLM 必须看到新页面才能决定下一步。

ch03 加的就是这个循环:

while not done:
    snapshot = take_snapshot(page)
    action = ask_llm(task, snapshot, history)
    if action == done: break
    execute(action)

这跟 Bread Agent 的 chat 循环本质相同——只不过工具变成了 click / type,结果变成了"页面快照"而不是"文件内容"。

<!-- bread-visual:start -->

浏览器循环:每动一下,就再看一眼

图解: 点击、输入、提交都会改变当前页面状态。 元素编号属于当前快照;不能拿首页的编号去点登录页。

<!-- bread-visual:end -->

2. 跑起来

cd ch03_agent_loop
python main.py

预期输出

=== 任务 ===
Log into the website with username 'admin' and password '1234'. ...

=== Agent 开始 ===
  [step 0] click({'index': 1})           ← 点 Login
  [step 1] type_text({'index': 2, 'text': 'admin'})       ← 填用户名
  [step 2] type_text({'index': 3, 'text': '1234'})        ← 填密码
  [step 3] click({'index': 4})           ← 点 Submit
  [step 4] done({'answer': 'Successfully logged in...'})

=== Agent 最终回答 ===
Successfully logged in with username 'admin' and password '1234'. The "Logout" link is
visible on the page (index [1]), confirming the login was successful.

运行后对照实际步骤,最后检查右上角是否出现 Logout。模型选择的具体步数可能不同,页面上的成功信号才是检查依据。


<!-- bread-practice:start -->

实操画面对照

填写用户名和密码后,准备提交

浏览器操作截图: 示例站登录表单中已填写 admin,密码以圆点显示。下一步点击 Login。 本图由浏览器按课程步骤实际操作采集,用于对照页面变化;不是课程 LLM 程序自动执行的证明。

提交后验证 Logout 出现

试读到这里 · 后续内容已封存

关注公众号,继续把这章学完

在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。