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 秒通过