饿了么外卖点餐
by @xbralready
Order food delivery from Ele.me (饿了么) using browser automation. The agent controls a real browser via Playwright MCP to browse restaurants, add items to cart...
clawhub install eleme-order📖 About This Skill
name: eleme-order description: Order food delivery from Ele.me (饿了么) using browser automation. The agent controls a real browser via Playwright MCP to browse restaurants, add items to cart, and submit orders. User handles payment manually. Use when user wants to order food, drinks, or groceries from Ele.me. metadata: { "openclaw": { "emoji": "🍜", "requires": { "anyBins": ["npx"], "mcpServers": ["playwright"] }, }, }
饿了么外卖点餐(浏览器自动化)
通过 Playwright MCP 浏览器自动化操控饿了么 H5 页面,帮用户点外卖。
核心原则
1. 操作前调用 browser_snapshot,根据 snapshot 中的 ref 值来点击元素
2. 不要猜测页面状态,始终以 snapshot 返回的实际内容为准
3. 尽量自主完成,减少打断用户(详见下方"自主 vs 确认"规则)
4. 支付环节绝不代替用户操作
自主 vs 确认规则(非常重要)
可以自主操作,不需要问用户的情况:
必须停下来问用户的情况:
核心思路:用户说了目标,就全力往目标推进,中间不要停。只在有歧义或需要确认金额时才问。
前置条件
需要在 openclaw.json 中配置 Playwright MCP Server:
{
"plugins": {
"entries": {
"acpx": {
"enabled": true,
"config": {
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
}
}
}
}
详细操作流程
第1步:打开饿了么
调用 browser_navigate,URL 为 https://h5.ele.me
打开后会出现两种情况:
/login/)→ 进入第2步第2步:登录(仅首次需要)
登录页在一个 iframe 中,snapshot 中的元素 ref 格式为 f1eXXX(注意 f1 前缀表示 iframe 内部)。
具体操作:
1. 勾选同意协议:找到 snapshot 中的 checkbox(ref 类似 f1e246),用 browser_click 点击它
2. 输入手机号:找到 textbox "请输入手机号"(ref 类似 f1e235),用 browser_fill_form 填入用户手机号
3. 获取验证码:点击 link "获取验证码"(ref 类似 f1e240)
4. 询问用户验证码:等用户告知短信验证码
5. 输入验证码:找到 textbox "请输入验证码"(ref 类似 f1e238),填入验证码
6. 点击登录:点击 button "同意协议并登录"(ref 类似 f1e242)
7. 等待跳转:登录成功后页面自动跳转到首页,调用 browser_snapshot 确认
注意:ref 值每次可能不同,必须从当前 snapshot 中获取实际的 ref 值。
第3步:首页 - 查看商家列表
登录后首页显示"为你推荐附近的商家"。
常见问题:首页可能显示"出错了,小宝正在检修中...",这是定位问题导致的。
generic "重新加载",点击它,页面会重新加载商家列表正常加载后,snapshot 中会出现商家列表。
自主判断逻辑:
第4步:进入店铺
点击商家后,页面跳转到店铺详情页。调用 browser_snapshot 获取菜单。
自主判断逻辑:
第5步:加购商品
商品旁边的按钮有两种:
button "选规格":需要选择规格(大小杯、温度、甜度等),点击后弹出规格面板button "加购":直接加入购物车(无需选规格的商品)generic "已售罄":该商品已售完,告知用户点击"选规格"后,snapshot 中会出现一个 dialog,包含:
已选:中杯/茶香款/标准冰/微糖)button "加入购物车"操作方式:
1. 如果用户没有指定规格偏好,直接用默认规格点击 button "加入购物车",不要停下来问用户要不要改规格
2. 如果用户说了规格偏好(如"大杯""去冰""少糖"),先点击对应选项,再加入购物车
3. 如果用户要多杯,点击数量旁边的加号按钮
4. 加购后告知用户已加入的商品和规格(事后通知,而非事前确认)
第6步:检查购物车 - 是否达到起送价
加购成功后,页面底部购物车栏会更新。snapshot 中会显示:
差¥X起送去结算未达起送价时:
1. 底部会有"凑单"按钮(snapshot 中找 text: 凑单),点击它
2. 弹出凑单面板,显示可加购的商品列表和价格
3. 向用户展示凑单选项,用户选择后加购
4. 加购后回到步骤6检查是否达到起送价
如果用户要继续加其他商品,重复步骤5。
第7步:去结算
点击底部的 去结算 按钮(注意:不是文字"去结算"而是底部栏中的按钮)。
页面跳转到确认订单页,snapshot 中包含:
generic "提交订单" 按钮向用户完整展示:
等用户确认后再点击"提交订单"。
第8步:支付(用户手动完成)
点击"提交订单"后,页面跳转到支付页面。
此时必须告知用户:
绝对不要尝试输入支付密码。
常见问题处理
页面显示"出错了"
点击"重新加载"按钮。通常是定位问题导致商家列表加载失败。商品已售罄
snapshot 中该商品旁会显示generic "已售罄" 而非加购按钮。告知用户并推荐其他商品。页面加载缓慢
饿了么 H5 页面加载较慢(3-5秒),点击操作后先等一下再browser_snapshot。如果 snapshot 内容没变化,等2秒再试。找不到目标商品
可以点击左侧菜单分类切换分类查看,或使用顶部搜索功能。搜索框在 snapshot 中通常显示为generic "搜索" 或 textbox。地址不正确
在确认订单页,地址区域是可点击的,点击后可以修改或选择其他收货地址。高效操作示例
用户说:"帮我点一杯霸王茶姬的伯牙绝弦"
理想流程(尽量减少与用户的对话轮次):
1. browser_navigate → https://h5.ele.me
2. browser_snapshot → 看到商家列表,找到"霸王茶姬"
3. browser_click → 点击霸王茶姬(不需要问用户"要选哪家")
4. browser_snapshot → 看到菜单,找到"伯牙绝弦"
5. browser_click → 点击"选规格"
6. browser_snapshot → 看到规格弹窗,默认规格即可
7. browser_click → 点击"加入购物车"(不需要问用户"默认规格可以吗")
8. browser_snapshot → 检查是否达到起送价
9. 如果达到起送价 → 点击"去结算" → browser_snapshot → 此时展示订单信息给用户确认
10. 用户确认 → 点击"提交订单" → 告知用户手动支付
关键:步骤3-8之间不需要停下来问用户,一口气完成。只在步骤9展示订单让用户确认。
错误示范(太慢):