AI+playwright+robotframework实现AI大模型驱动的web UI自动化测试

文章目录


前言

前些日子将团队内的UI自动化完成了重构,由之前使用的selenium的迁移到了新生的工具playwright。 在AI大模型的加持下,脚本质量稳定和编写效率上得到了明显提升。刚刚发了一个关于AI 编写自动化接口测试的博客,看起来反响不错,所以又写了这篇文章与大家分享。本文从playwright与selenium 对比出发,尽量用简单语言来描述,一篇文章不太可能教会你如何去写,更多的是思路与设计的分享


一、playwright与selenium 对比

关于对比,之前有博主总结的蛮好,直接引用了 Playwright 与Selenium对比。我稍微总结一下,便于理解,从原理上对比

  • selenium 使用“代理”webdriver 协议来统一接口对接不同厂家的浏览器
  • playwright直接和各个浏览器原生底层调试协议来通信,比如CDP(Chrome Devtools Protocol)

从原理上对比不难看出,selenium其实是在众多浏览器中采用“套一层”去解决自动化问题的,那么浏览器很多原生的底层数据selenium根本无法实现,比如网络请求参数、控制台信息等等。而且执行速度上也天然的没有playwright快。在AI时代,个人感觉因为selenium底层原理,导致目前相关的AI应用难有明显的成果,之前我也搜索了很多,selenium作为老牌工具在AI上的火花好像还没有诞生。反观playwright,结合AI的应用有很多亮点之处,所以近期在团队内部已经将驱动UI的底层重构,切换为playwright。

二、AI-playwright MCP

那么如何让AI与web自动化有效的结合,并带来效率、准确度上的提升呢。其实我另一篇博客利用AI+ MCP让AI模型与业务数据完美结合,自动编写高质量的自动化测试脚本也提到过类似的解决方式,也就是利用MCP,至于什么是MCP本文不再赘述。让AI模型分析页面的dom元素。 利用MCP来驱动浏览器,告诉AI模型记住页面交互的细节,它会抓取页面的情况并帮助你分析页面的元素结构和交互的过程。那么有了这些源数据以后,它会很好帮助你编写UI自动化测试,如果你之前有很好的代码结构它会让你在编写脚本的过程中减轻很多的工作量。

至于哪个模型能力最强等等话题。在现在各种LLM百花齐放,各路追赶的情况下。对于第一批梯队的大模型,我觉得对于普通人来说差异不大。 当然还是有差距的,建议喜欢哪个,用哪个顺手就用哪个好了。

AI模型也会犯错,而且会犯很多错,还有可能在跑偏的路上一直带歪你,所以如果利用好AI也是门学问。目前AI发展的情况,个人建议记住一个原则一定是AI辅助,半自动档位配合你工作,不要偷懒不去reviewAI生成的代码,有错误必须反馈;积累好有效的prompt;在AI生成的代码毫无逻辑下,立即停止,手动coding教会它如何去写;在AI生成代码很复杂的情况下,手动拆分模式加入合理设计模型,这样会更高效的协助你coding;

demo 来演示一下
如何安装playwright MCP 请参考node 环境的MCP Server安装
其实我也调研过目前市面上一些比较火的AI测试工具如TestCraft、Testim.ai 、applitools 等等,封闭式的测试用例管理和编写方面,封装和封闭性太强了,而且收费,我觉得很难适合大多数业务的需求。下面使用一个demo来演示一下如何使用playwright MCP 。

在这里插入图片描述


在这里插入图片描述


OK 让我们试运行一下生成的脚本看看

在这里插入图片描述


完美运行!!! 在实际业务中还是要修改的,demo演示的是AI 分析页面并输出脚本的能力,大家可以举一反三。

三、Playwright封装设计建议

分层设计思想的指导下,考虑到可维护性和可扩展性等,主要的封装思路如下,供参考:

  • playwright 提供了原生操作浏览器的能力,比如点击click、输入input等等。那么基于底层封装一个你们业务的playwright即 XxxPlayWright。
  • 在XxxPlayWright 基础之上,将也代码组件化,因为每个公司的业务都不一样,大多数的UI控件其实都是DIY过的,所以基于XxxPlayWright基础上,可以将操作告警框、下拉框等组件的代码模块化,可以考虑使用Mixin 等结构型的设计模式。
  • 基于模块组件化的代码,封装业务关键字层,提供业务的UI操作能力
  • case 上层只调用UI业务代码关键字。

robotframerwork-browser 介绍

博主使用的自动化测试框架是robotframework,所以针对RF来简单介绍一下相关的知识,如果使用pytest的,其实原理类似。
使用的自动化测试框架一直是robotframwork,所以我是基于robot官方的库再二次封装一下,简单介绍一下robotframework-browser的特性。如果你使用原生的playwright可以忽略这部分内容
Browser library powered by Playwright。 关键点:new browser 、new page 等无需关心资源清理问题,RF框架可以自动清理,确保资源的隔离。 自动关联已经存在的资源和自动启动需要的资源。
RF-browser 文档

安装
Only Python 3.9 or newer is supported. From Node side 18, 20 and 22 LTS versions are supported.

  1. Install node.js e.g. from https://nodejs.org/en/download/
  2. Update pip pip install -U pip to ensure latest version is used
  3. Install robotframework-browser from the commandline: pip install robotframework-browser
  4. Install the node dependencies: run rfbrowser init in your shell
  • if rfbrowser is not found, try python -m Browser.entry init
    这里需要注意的是,playwright不像selenium那样需要单独安装驱动和驱动对应的浏览器,playwright提供了自动安装的方式。我这里使用了robot的playwright库,所以使用了rfbrowser init 进行安装,如果你使用原生playwright,它也提供了类似的能力。

Read more

2025版最详细WebStorm下载安装教程(详细图解)

2025版最详细WebStorm下载安装教程(详细图解)

目录 一、前言 二、WebStorm的下载安装 1、下载WebStorm 2、安装WebStorm 3、首次启动WebStorm 一、前言 前端一般就是用WebStorm或者是VSCode,Jetbrains家的ide一般都比较重,VSCode相对而言就轻快一点。主要还是看大家自己喜欢哪个就下哪个,我个人电脑内存是32G所以我一直用Jetbrains家的软件体验不错。本博客记录一下WebStorm的安装流程,大家自行参考 然后WebStorm从24年10月开始就是免费的了,所以不需要任何许可证直接下了就能用,并且也不需要像Java和Python那样配JDK和解释器,整体还是很简单的 二、WebStorm的下载安装 1、下载WebStorm 打开浏览器,访问JetBrains的官方网址,点击如下网址能直接跳转到WebStorm的下载页面: Download WebStorm: The JavaScript and TypeScript IDE by JetBrains 选择好自己的系统,然后直接点击Download即可 等待安装包下载完成,网速快

【面试分享】前端 React 50个基础高频面试题,助你轻松拿 offer!

【面试分享】前端 React 50个基础高频面试题,助你轻松拿 offer!

目录 前端基础高频面试题之-- React 篇 1、什么是React? 2、React有什么特点? 3、列出React的一些主要优点。 4、React有哪些限制? 5、什么是JSX? 6、为什么浏览器无法读取JSX? 7、React中的组件是什么? 8、怎样解释 React 中 render() 的目的。 9、什么是 Props? 10、React中的状态是什么?它是如何使用的? 11、 React 中的箭头函数是什么?使用箭头函数的好处? 12、什么是高阶组件(HOC)? 13、你能用HOC做什么? 14、什么是纯组件? 16、什么是React 路由? 17、为什么 useState 返回的是数组而不是对象? 18、如何实现

前端核心知识:Vue 3 编程的 10 个实用技巧

前端核心知识:Vue 3 编程的 10 个实用技巧

文章目录 * 1. **使用 `ref` 和 `reactive` 管理响应式数据** * 原理解析 * 代码示例 * 注意事项 * 2. **组合式 API(Composition API)** * 原理解析 * 代码示例 * 优势 * 3. **使用 `watch` 和 `watchEffect` 监听数据变化** * 原理解析 * 代码示例 * 注意事项 * 4. **使用 `provide` 和 `inject` 实现跨组件通信** * 原理解析 * 代码示例 * 优势 * 5. **使用 `Teleport` 实现组件挂载到任意位置** * 原理解析 * 代码示例 * 优势 * 6. **使用 `Suspense` 处理异步组件加载** * 原理解析 * 代码示例 * 优势

如何在Android Studio中使用Gemini进行AI Coding

如何在Android Studio中使用Gemini进行AI Coding

Android Studio 作为安卓APP开发领域长期以来的核心开发工具,其稳定性和功能性已得到广泛认可。而 Gemini 作为 Google 推出的原生 AI 编程辅助系统,则为开发者提供了智能化的协作支持。         在引入 Gemini 后,你不再需要频繁切换浏览器查文档、使用外部ai工具复制粘贴代码再回来调试 bug。它可以直接在 IDE 内理解你的项目结构、阅读你的代码上下文,生成函数、解释错误、甚至帮你优化逻辑或编写单元测试——这一切都发生在你熟悉的编辑器中,无缝衔接、无需离开代码界面。 Gemini in Android Studio官网链接         接下来我将介绍如何在在Android Studio中直接使用Gemini以及调用Gemini API。 一、如何在 Android Studio 中启用 Gemini 1. 更新到最新版本的 Android Studio Gemini 从 Android Studio Iguana(