OmniPaser V2 的发布,使我对纯视觉方案做 UI 自动化测试产生了浓厚的兴趣,特别是使用 AI 来实现自然语言驱动做一些事情,但是之前使用 Browser Use 体验过 AI 来操作浏览器,发现准确率真的一言难尽,甚至直接卡死,所以还是放弃了,所以做了一个用 Excel 编排执行步骤,让 OmniPaser V2 识别屏幕数据,然后经过数据转化,驱动 Playwright 来操作,做了一个简单的版本。
OmniPaser V2 源生代码在 Github 可以找到,不过发现了好几处缺陷,所以单独把里面的模型解析方法提取了出来,运行在自己本地电脑上,使用 fastapi 做了一层转发,测试框架通过 api 进行交互。
图像识别有点慢,是因为电脑 GPU 性能、图片尺寸和图像里面内容综合导致的,相信如果是做移动端的识别,识别速度会提升几倍。
B 站效果视频链接:
代码就暂不公布了,因为不是独立的代码仓库,简单说下实现思路:
我的设备: MacbookPro M1 款 (2020) 16G+512GB 建议使用有英伟达 GPU 的电脑或服务器,苹果芯片在使用 torch 时会有一些问题,需要改 torch 版本 (2.4.0) 和代码
1、下载 OmniParser 源码: https://github.com/microsoft/OmniParser
2、源码经过测试,有一些奇奇怪怪的 Bug,特别是使用 Gradio 启动,使用几次发现有内存释放失败问题,会导致进程内存约占越大,所以建议单独把代码里面的 omniparser.py 有关的代码提取出来,然后自己写一个 fastapi 来和测试框架作交互,大体就是 api 传递识别语言和图片,api 返回识别的结构数据。
这里建议 omniparser 和测试框架分两个服务,因为 omniparser 涉及模型的加载,所以它启动的时候很慢,如果你把这部分服务扔到测试框架里面,会严重影响测试代码执行效率。
3、然后设计一个 Excel 模板,模板设计一些常用的操作,比如点击、鼠标下滚、键盘输入等等。
4、当然上一步只是最基础常用的操作,想要实现一些复杂逻辑,必须在 Excel 设计自定义脚本调用,这部分逻辑通过测试框架里面测试函数,Excel 文件设计好第几步去调用就好了
5、至于视频里面呈现的红框就很简单了,omniparser 返回了所有识别到的元素坐标和索引,你只需要通过 playwright 执行 js 脚本的方式,把这些红框插入到当前页面就行了 (不会的问 ai,这段逻辑我直接 copy ChatGPT 的代码)