自动登录京东评价页面,批量完成所有待评价商品的五星好评。
如果用户尚未安装 browser-use,先执行安装:
pip install browser-use
browser-use install
browser-use install 会安装 Chromium 浏览器及系统依赖。安装完成后验证:
browser-use doctor
--browser real 复用 cookie)--real --headed 参数,让用户可见浏览器操作过程执行任何操作前,先检查 browser-use 是否可用:
which browser-use || pip install browser-use && browser-use install
如果 browser-use doctor 报错,根据提示修复。确保 Chrome 浏览器已打开且已登录京东。
https://club.jd.com/myJdcomments/myJdcomment.actionbrowser-use eval 提取所有"评价"链接的 ruleid// 提取 ruleid 的 JS
Array.from(document.querySelectorAll('a'))
.filter(a => a.textContent.trim() === '评价' && a.href.includes('orderVoucher'))
.map(a => a.href.match(/ruleid=(\\d+)/)[1])
.filter((v, i, a) => a.indexOf(v) === i)
对每个 ruleid,按以下顺序操作:
https://club.jd.com/myJdcomments/orderVoucher.action?ruleid={ruleid}
> 为什么必须先填文字: 京东的星级评分交互会清空所有 textarea。如果先评分再填文字,文字会被清空。
document.querySelectorAll('textarea')browser-use eval 聚焦:ta.focus(); ta.click()browser-use type 命令输入好评文字(不可用 JS value 赋值,京东的字符计数器和表单校验不认 JS 赋值)宝贝收到了质量很好做工精细非常满意的一次购物体验好评
商品不错包装很严实物流也很快好评推荐购买
质量很好价格实惠值得购买五星好评满意
收到货了跟描述一样很满意以后还会再来好评
东西挺好的用着很顺手推荐购买好评
快递很快包装完好产品质量也不错好评推荐
物美价廉性价比很高满意的一次购物体验
用了一段时间了质量没问题好评推荐购买
外观好看做工精致非常满意好评推荐
第二次购买了质量稳定值得信赖好评
物流超快东西也很好用点赞推荐购买
性价比很高质量超出预期推荐好评
服务态度很好物流速度很快整体体验非常满意
安装师傅很专业态度很好非常满意的一次购物
配送速度快包装完好安装服务也很到位好评
document.querySelector('.textarea-num b').textContent = ta.value.length对所有 .commstar 评分组件执行五星评分:
document.querySelectorAll('.commstar').forEach(group => {
// 逐星 hover,触发京东评分组件的内部状态
for (let i = 1; i <= 5; i++) {
const star = group.querySelector('.star.star' + i);
if (star) {
star.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true }));
star.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
}
}
// 点击第5颗星确认评分
const s5 = group.querySelector('.star.star5');
if (s5) s5.dispatchEvent(new MouseEvent('click', { bubbles: true }));
});
部分订单有"服务印象"标签选择,点击正面标签:
const reasonsSection = document.querySelector('.fop-reasons');
if (reasonsSection) {
const labels = reasonsSection.querySelectorAll('label, span');
const positiveLabels = Array.from(labels).filter(l => {
const t = l.textContent.trim();
return t.includes('态度好') || t.includes('速度快') || t.includes('专业')
|| t.includes('满意') || t.includes('耐心') || t.includes('及时')
|| t.includes('热情') || t.includes('细心') || t.includes('准时');
});
positiveLabels.slice(0, 3).forEach(l => l.click());
}
评分操作可能清空 textarea 或重置计数器,提交前必须重新同步:
document.querySelectorAll('textarea').forEach(ta => {
const container = ta.closest('.fop-item');
const counterB = container?.querySelector('.textarea-num b');
if (counterB && ta.value.length > 0) {
counterB.textContent = ta.value.length;
}
});
const btn = Array.from(document.querySelectorAll('a'))
.find(el => el.textContent.trim() === '发表');
if (btn) btn.click();
提交后等待 2-3 秒,检查页面是否跳转离开评价页:
const body = document.body.innerText;
if (!body.includes('评价订单')) return 'SUCCESS'; // 已跳转,评价成功
if (body.includes('请填写完整的评价内容')) return 'ERROR'; // 校验失败
全部评价完成后,回评价列表页验证所有页的"评价"链接数为 0。
> 关键: 所有命令必须加 --session 保持会话状态,否则后续 eval/type/state 会报 SessionManager not initialized 错误。
# 打开页面
browser-use --browser real --headed --session jdreview open "<url>"
# 执行 JavaScript(返回 JSON)
browser-use --browser real --headed --session jdreview --json eval "<js_code>"
# 模拟键盘输入(必须用于 textarea 填文字)
browser-use --browser real --headed --session jdreview type "<text>"
# 查看页面状态
browser-use --browser real --headed --session jdreview state
每个 browser-use CLI 命令是独立进程,不加 --session 无法共享浏览器状态。修复方式:所有命令统一加 --session 参数,脚本中在 run() 函数统一注入即可。open 命令负责创建会话,后续 eval/type/state 复用同一会话。
通常是 eval 执行失败但被静默吞掉(脚本 bu_eval 的 except 分支返回了空字符串)。确认 run() 函数中已包含 --session 参数。browser-use 4.x 版本起强制要求 session 参数。open 命令负责创建会话,后续 eval/type/state 复用同一会话。
技能目录下的 scripts/jd_review.py 是完整的批量评价脚本,可以通过 browser-use CLI 的 Python API 直接执行:
python3 /Users/huangdq/skills/jd-review-bot/scripts/jd_review.py
该脚本封装了上述所有流程,包括:
共 2 个版本