Midscene与Qwen-VL模式小试UI自动化

372 阅读5分钟

背景

Midscene.js是一款由字节跳动Web Infra团队开发的开源、基于AI技术的UI自动化工具,其应用场景广泛且多样:

  1. 自动化测试
  • 功能测试:Midscene.js能够模拟用户操作,如点击按钮、输入文本等,对Web应用进行功能测试,确保应用在不同情况下都能稳定运行。
  • 冒烟测试:对于简单的站点走查和编译产物巡检场景,Midscene.js尤为实用,可以快速验证关键用户路径是否可用。
  • 端到端测试:通过与Puppeteer、Playwright等自动化测试框架集成,Midscene.js可以实现端到端的自动化测试,覆盖更全面的测试场景。
  1. 数据抓取
  • 自定义数据查询:Midscene.js允许用户通过自然语言描述所需的数据格式,从复杂的页面内容中提取出关键信息,为数据分析和业务决策提供支持。
  1. 性能监控
  • 页面加载时间:通过自动化测试,Midscene.js可以监测页面的加载时间,帮助开发者优化应用性能。
  • 响应速度:测试用户交互的响应速度,确保应用在高并发场景下仍能保持良好的用户体验。
  1. 界面一致性检查
  • UI元素检查:Midscene.js可以自动检查页面上的UI元素是否符合预期,如颜色、字体、布局等,确保应用在不同设备和浏览器上的一致性。
  1. 快速原型验证
  • 用户交互验证:在产品开发初期,Midscene.js可以帮助开发者快速验证用户交互设计,通过模拟用户操作来评估交互的流畅性和易用性。
  1. 持续集成与持续交付(CI/CD)
  • 自动化测试集成:Midscene.js可以集成到CI/CD流水线中,实现自动化测试的持续运行,确保每次代码提交都不会引入新的错误。
  1. 教育与培训
  • 自动化测试教学:Midscene.js的自然语言交互方式降低了自动化测试的门槛,使得非专业编程人员也能够轻松上手,因此它也可以用于自动化测试的教学和培训中。

从 Midscene v0.12 开始,适配了千问 Qwen-2.5-VL 模型。

安装插件

www.crxsoso.com/webstore/de…

Qwen 2.5 VL

特性

  • 低成本:Midscene 不需要发送 DOM 树给模型。和 gpt-4o 相比,它可以节省 30% 到 50% 的 token 消耗,复杂场景下甚至更多。
  • 高分辨率支持:Qwen 2.5 VL 支持更高的分辨率输入,足以满足大多数情况。
  • 开源:这是一个开源模型,因此你可以选择使用云提供商已经部署好的版本,或者自己部署到你自己的服务器上。

限制

  • 小图标识别能力较差:和 gpt-4o 一样,它可能无法准确定位小图标。
  • 断言能力一般:在某些情况下,Qwen 2.5 VL 的断言能力可能不如 gpt-4o。
  • 无法使用缓存:目前在 Qwen 2.5 VL 中无法使用 Midscene.js 的缓存功能。

配置

OPENAI_BASE_URL="dashscope.aliyuncs.com/compatible-…"

OPENAI_API_KEY="sk-222222222222222222222"

MIDSCENE_MODEL_NAME="qwen-vl-max-latest"

MIDSCENE_USE_QWEN_VL=1

实战

以博客园为例

clipboard

下载report

clipboard

token消耗

usage

{ "prompt_tokens": 2150, "completion_tokens": 146, "total_tokens": 2296, "completion_tokens_details": { "text_tokens": 146 }, "prompt_tokens_details": { "text_tokens": 729, "image_tokens": 1421 } }

搜索框定位

clipboard

其他探索

     虽然 Midscene.js 支持点击、输入、滚动、拖拽等常见操作,但滑块验证码的验证过程可能涉及更复杂的用户行为模式检测,如滑动轨迹、滑动速度等。这些复杂的行为模式可能无法通过简单的自然语言描述来模拟。此外,Midscene.js 在处理某些复杂操作时可能需要手写代码进行配合,而滑块验证码的验证过程可能就属于这种复杂操作。因此,即使 Midscene.js 能够模拟滑块的拖动操作,也可能无法通过验证码的验证逻辑。

Midscene.js 对 UI 自动化测试的意义

一、降低自动化测试门槛

  • 自然语言交互:Midscene.js 允许测试人员使用自然语言描述测试步骤,而无需编写复杂的代码。这大大降低了自动化测试的门槛,使得非专业编程人员也能够轻松上手。
  • 简化测试代码:通过自然语言描述,测试人员可以更直观地表达测试意图,减少了编写和维护测试代码的工作量。

二、提高测试效率

  • 快速编写测试用例:Midscene.js 的自然语言交互方式使得测试人员能够更快地编写测试用例,缩短了测试周期。
  • 自动化执行:Midscene.js 可以与 Puppeteer、Playwright 等自动化测试框架集成,实现测试用例的自动化执行,提高了测试效率。

三、增强测试灵活性

  • 支持多种操作:Midscene.js 支持点击、输入、滚动、拖拽等常见操作,以及更复杂的用户行为模拟,如鼠标悬停、键盘输入等。这使得测试人员能够更灵活地模拟用户操作,覆盖更全面的测试场景。
  • 易于扩展:Midscene.js 的设计允许测试人员根据需要扩展其功能,以满足特定的测试需求。

四、提升测试准确性

  • 减少人为错误:自动化测试可以减少人为操作带来的错误,提高测试的准确性。
  • 稳定执行:Midscene.js 可以稳定地执行测试用例,不受环境、时间等因素的影响,确保测试结果的可靠性。

五、促进团队协作

  • 易于理解:自然语言描述的测试用例更易于被团队成员理解和评审,促进了团队协作和沟通。
  • 共享测试资源:Midscene.js 支持测试资源的共享和复用,使得团队成员可以更有效地利用测试资源,提高测试效率。