Midscene 支持缓存 Plan 的步骤与匹配到的 DOM 元素信息,减少 AI 模型的调用次数,从而大幅提升执行效率。
Android 自动化任务不支持缓存策略。
效果
通过引入缓存后,用例的执行时间大幅降低了,例如在如下案例中,执行耗时从51秒降低到了28秒。
想要启用缓存特性,有两个关键点:
MIDSCENE_CACHE=1
环境变量,用以启用缓存匹配cacheId
来指定缓存文件名。在 Playwright 和 Yaml 模式下,cacheId
会自动设置为测试文件名,在 Javascript 模式下,需要手动设置 cacheId
。在 Playwright 模式下,只需要设置 MIDSCENE_CACHE=1
环境变量即可。
cacheId
会自动设置为测试文件名。
在 Javascript 模式下,需要设置 MIDSCENE_CACHE=1
环境变量,并且需要手动设置 cacheId
。
在 Yaml 模式下,需要设置 MIDSCENE_CACHE=1
环境变量。
cacheId
会自动设置为 yaml 文件名。
缓存内容会保存到 ./midscene_run/cache
目录下,以 .cache.yaml
为扩展名。
缓存内容分为两类:
ai
和 aiAction
方法的结果.aiLocate
, .aiTap
等方法的结果查询类方法,例如 aiBoolean
, aiQuery
, aiAssert
的内容不会被缓存。
如果缓存未命中,Midscene 将会重新调用 AI 模型,并更新缓存文件。
你可以查看报告文件。如果缓存命中,你将看到 cache
提示,并且执行时间大幅降低。
你需要在 CI 中将缓存文件提交到仓库中,并再次检查缓存命中的条件。
不是的。
缓存是加速脚本执行的手段,但它不是确保脚本长期稳定执行的工具。我们注意到,当页面发生变化时,缓存可能会失效(例如当元素 DOM 结构发生变化时)。在缓存失效时,Midscene 仍然需要调用 AI 服务来重新执行任务。
你可以删除缓存文件,或者编辑缓存文件的内容。
你可以使用 cacheable
选项来禁用单个 API 的缓存。
具体用法请参考对应 API 的文档。
Midscene 使用 XPath 来缓存元素定位信息。我们使用相对严格的策略来防止误匹配。在以下情况下,缓存不会命中:
当缓存未命中时,Midscene 将回退到继续使用 AI 服务来查找元素。