Agent 能做什么
示范录制
有些流程演示一遍比描述清楚更快。在 Chrome 里亲手做一遍,chrome-use 就把它写成一个
chrome-use script 脚本(或者一个站点适配器),之后重放
不需要模型:同样的步骤、同样的等待,一条命令跑完。
在终端里用
chrome-use open https://shop.example/cart # 流程开始的页面
chrome-use teach start --name checkout # 然后在这个标签页里亲手做一遍
chrome-use teach stop # 写到 ~/.chrome-use/teach/checkout.json,并列出步骤
chrome-use teach replay ~/.chrome-use/teach/checkout.json --arg-env password=SHOP_PW
会记下点击、输入、下拉选择、复选框和单选框、回车和 Esc、上传以及页面跳转。连续按键合成一次 fill;只是把光标点进输入框的点击会去掉;
点了之后打开新页面的,后面会加一步等待新页面。滚动只有在让页面加载了更多内容时才保留。
teach status 看目前录到什么,teach cancel 放弃这次录制。
teach replay 就是 chrome-use script:一次往返跑完,哪一步失败就以退出码 1 停下并指出是哪一步,最后检查是否停在你结束时的页面。
依赖脚本之前先看一遍 teach stop 打印的步骤;文件就是普通的 JSON 步骤列表,可以直接改。
怎么再次找到元素
每一步优先用人看到的东西定位(输入框的标签,或者角色加名字,比如按钮“Place order”),CSS 选择器作为备选放在 "or" 里。
只有前一个找不到可操作的目标时才试下一个,所以同一个动作不会做两次。
{"do": "getbylabel", "label": "Email", "subaction": "fill", "value": "ada@example.com",
"or": [{"do": "getbyrole", "role": "textbox", "name": "Email", "subaction": "fill", "value": "ada@example.com"},
{"do": "fill", "selector": "#email", "value": "ada@example.com"}]}
密码和文件
在密码、银行卡、一次性验证码这类输入框里输入的内容不会被记录,录制器只记下“这里输入过一个密码”。它变成脚本参数,没传参数脚本就不会开始。
建议从环境变量传入,免得留在命令历史里:--arg-env password=SHOP_PW。上传的文件变成 --arg file=./invoice.pdf。
表单如果把密码放进下一页的网址,录下来的网址里也会抹掉。
生成站点适配器
chrome-use teach stop --adapter # ~/.chrome-use/my-sites/<site>/<flow>.js
chrome-use site add ~/.chrome-use/my-sites && chrome-use site update
chrome-use site <site>/<flow> --until-done
生成的适配器通过 args.ui(真实输入)点击和输入,一次运行处理一个页面,所以要带 --until-done。
录制时输入的内容变成可选参数(--text1 …),默认值是录到的值。像对待其他适配器一样检查一遍。
在侧边栏里用
侧边栏在“选择元素”旁边有一个录制按钮。按下,在这个标签页里做一遍,再按一次:
侧边栏列出步骤,可以改名、编辑脚本,保存到 ~/.chrome-use/teach/,并给出运行命令。
页面能看到什么
什么都看不到。录制器运行在为这次录制单独创建的隔离环境里(侧边栏用扩展的内容脚本环境),命令行通过一个只加在这个环境里的绑定接收事件, 页面自己的环境里没有。页面里不会多出全局变量、元素、属性或事件监听,停止后录制器和绑定都会移除。打开隐身模式时也是这样。
代价是:Chrome 只有在开启 Runtime.enable 时才会把绑定带到新页面,而页面能察觉这个开关,所以 chrome-use 改为每次换页后重新装上录制器。
新页面刚出现的一瞬间里的操作可能漏掉,步骤列表会显示实际录到的内容。旧版扩展在隐身模式下会拒绝这个绑定,录制器就改为轮询,teach start 会提示。
实测
Mac,Chrome for Testing 155,用真实(可信)输入录制,在新浏览器、新配置文件里重放:
| 流程 | 步骤 | 脚本重放 | 适配器重放 |
|---|---|---|---|
| httpbin.org 订单表单(文本、单选、复选、多行文本、提交) | 10 | 通过,2.4 秒 | 通过 |
| 维基百科搜索后打开一个结果 | 6 | 通过,2.8 秒 | 通过 |
| Sauce Demo:登录、加入购物车、三步结账(密码作为参数) | 17 | 通过,2.3 秒 | 通过 |