Midscene.js 提供了 AI 缓存能力,用于提升整个 AI 执行过程的稳定性和速度。这里的缓存主要指的是缓存 AI 识别页面的元素,在页面元素尚未发生变化时,AI 的查询结果会被缓存。
目前缓存的能力仅在 Playwright
上进行了支持,Midscene 能够支持测试组级别的缓存。
使用方式
使用效果
目前 Midscene 在 Playwright 上的缓存策略主要是以测试组为单位,在每个测试组里的 AI 行为将发生缓存。目前缓存的内容主要有两类:
不会对 aiQuery
的内容进行缓存,因此可以通过 aiQuery
来确认前面 AI 的任务是否符合预期。
任务规划
上面的任务规划将会被拆解成:
当页面的 URL 地址和页面的宽高未发生变化时,开启缓存后将会直接缓存上面任务的结果。
元素识别
在 AI 对用户的指令进行了任务规划后,需要针对特定的元素进行操作,那么就需要用到 AI 对于页面元素的识别能力,例如下面的任务:
上面的元素识别将会转换成具体的元素识别:
当使用 MIDSCENE_CACHE=true
环境变量后,将会自动按照 Playwright
的测试组进行缓存:
上面的 test
将按照 ai todo
和 ai todo2
这两个维度产生缓存,分别会在项目的根目录中的 midscene/midscene_run/cache
中生成 todo-mvc.spec:10(ai todo).json
和 todo-mvc.spec:13(ai todo2).json
缓存文件。
缓存文件介绍
当使用了 MIDSCENE_CACHE=true
环境变量并且有缓存文件时,将会通过上面的缓存文件读取 AI 对应的结果。以下是缓存命中的条件:
缓存能力主要解决了以下问题:
对于未命中缓存的 AI 行为将会交给 AI 重新执行任务,并在整个测试组执行结束后更新缓存,可以通过查看缓存文件来确定哪些任务是否有更新。