news 2026/5/5 16:47:21

基于Yi-Coder-1.5B的自动化测试:Selenium脚本生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Yi-Coder-1.5B的自动化测试:Selenium脚本生成

基于Yi-Coder-1.5B的自动化测试:Selenium脚本生成

1. 当测试工程师还在手动写脚本时,有人已经用AI自动生成了

电商网站上线前要测登录、购物车、支付流程;SaaS系统每次迭代都要验证核心功能是否正常;金融类应用对UI稳定性的要求更是严苛到毫秒级。这些场景里,测试团队每天面对的是成百上千条测试用例,而每一条都得对应一段Selenium脚本——定位元素、模拟点击、等待加载、断言结果。重复劳动多、维护成本高、新人上手慢,成了很多团队的共同痛点。

去年底,我们团队在重构一套内部管理系统的测试体系时,尝试把Yi-Coder-1.5B模型接入测试工作流。它不是那种需要GPU集群才能跑的大模型,一台普通开发机就能启动,但生成Selenium脚本的能力却出乎意料地扎实。最让我们惊喜的是,它能准确理解“点击右上角头像后选择退出登录”这样的自然语言描述,并输出结构清晰、可直接运行的Python代码,覆盖了90%以上的常规UI操作场景。

这不是概念演示,而是真实落地的工程实践。接下来,我会带你看看这套方案是怎么跑起来的,它解决了哪些实际问题,又有哪些值得借鉴的经验。

2. Yi-Coder-1.5B为什么特别适合测试脚本生成

2.1 小而精的代码专家,专为开发者设计

Yi-Coder系列模型从诞生起就有一个明确的定位:做懂代码的轻量级助手。1.5B这个版本尤其适合本地部署和快速响应——866MB的模型体积,连中端笔记本都能轻松加载;128K的上下文长度,意味着它能同时理解一份完整的测试用例文档和对应的页面HTML结构;支持52种编程语言,其中对Python、Java、JavaScript这三大测试常用语言的理解深度,在开源模型中属于第一梯队。

对比其他通用大模型,Yi-Coder-1.5B在代码生成任务上有个明显优势:它不会为了“显得聪明”而堆砌复杂逻辑。比如你让它写一个“输入用户名密码并点击登录”的脚本,它不会擅自加入异常重试、日志记录、配置中心调用等额外功能,而是专注把基础动作做准、做稳。这种克制反而让生成的代码更贴近测试工程师的真实需求。

2.2 理解测试语义,不止是语法转换

很多开发者误以为AI生成测试脚本就是“把中文翻译成Python”,其实远不止于此。真正的难点在于理解测试意图背后的业务逻辑。举个例子:

“在商品详情页,找到‘立即购买’按钮,如果按钮文字是‘缺货中’则跳过,否则点击并等待订单确认弹窗出现”

这段描述里包含了条件判断、状态检查、动态等待等多个测试关键点。Yi-Coder-1.5B能准确识别出:

  • “立即购买”是待定位的元素文本
  • “缺货中”是需要校验的动态文本内容
  • “订单确认弹窗”是预期出现的页面元素
  • 整个流程需要显式等待机制

它生成的代码会自然包含WebDriverWaitexpected_conditions等Selenium核心组件,而不是简单用time.sleep()硬等。这种对测试语义的深层理解,源于它在训练数据中大量接触过开源项目的测试用例和CI/CD脚本。

2.3 开箱即用的本地化体验

我们不需要对接任何云服务或API密钥,整个流程完全在内网完成。用Ollama一键拉取模型后,通过几行Python代码就能调用:

from ollama import chat response = chat( model='yi-coder:1.5b', messages=[{ 'role': 'user', 'content': '生成Selenium脚本:在登录页面输入用户名"testuser"和密码"123456",点击登录按钮,等待首页标题"欢迎回来"出现' }], options={'temperature': 0.3} ) print(response['message']['content'])

响应速度在2-5秒之间,足够支撑日常的交互式编写。更重要的是,所有提示词(prompt)和生成结果都留在本地,符合企业对数据安全的基本要求。

3. 从测试用例到可执行脚本的完整实践

3.1 构建你的测试提示词模板

提示词设计是整个流程的关键。我们经过几十次迭代,总结出一套针对UI测试的高效模板,它包含三个核心要素:

上下文(Context):告诉模型当前要测试的系统类型和约束条件
任务(Task):用清晰动词描述具体操作步骤
格式(Format):明确指定输出代码的语言、框架和结构要求

下面是一个我们团队正在使用的实际模板:

你是一名资深Selenium测试工程师,正在为一个基于Vue3的电商后台系统编写自动化测试脚本。 请严格遵循以下要求: - 使用Python 3.9+和Selenium 4.x - 所有元素定位优先使用CSS选择器,其次XPath - 必须使用WebDriverWait进行显式等待,超时时间设为10秒 - 每个操作后添加简短注释说明目的 - 不要包含driver初始化和quit()调用,只生成核心操作部分 现在请生成脚本:{{测试用例描述}}

{{测试用例描述}}替换成实际内容,比如:“在用户管理列表页,点击ID为'usr-1024'的用户所在行的‘编辑’按钮,修改姓名字段为‘张三_测试’,点击保存,验证页面提示‘更新成功’”

3.2 看看它生成的实际效果

我们拿一个真实案例来演示。这是某CRM系统的测试用例:

“在客户列表页,使用搜索框输入‘北京科技’,点击搜索按钮,验证结果表格中第一行的客户名称包含‘北京科技’,且状态列显示‘已签约’”

Yi-Coder-1.5B生成的代码如下(已做脱敏处理):

# 在搜索框中输入关键词 search_input = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "input[placeholder='请输入客户名称']")) ) search_input.clear() search_input.send_keys("北京科技") # 点击搜索按钮 search_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")) ) search_button.click() # 等待搜索结果加载完成 first_row = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "tbody tr:first-child")) ) # 验证第一行客户名称包含关键词 name_cell = first_row.find_element(By.CSS_SELECTOR, "td:nth-child(2)") assert "北京科技" in name_cell.text, f"客户名称未包含关键词,实际值:{name_cell.text}" # 验证状态列为'已签约' status_cell = first_row.find_element(By.CSS_SELECTOR, "td:nth-child(5)") assert status_cell.text == "已签约", f"状态列不匹配,实际值:{status_cell.text}"

这段代码可以直接粘贴到现有测试框架中运行。它没有使用任何魔法字符串,所有CSS选择器都符合前端团队的规范;等待逻辑覆盖了可能的网络延迟;断言信息清晰,失败时能快速定位问题。

3.3 处理复杂场景的实用技巧

当然,不是所有用例都这么规整。我们遇到过几个典型挑战,也摸索出了应对方法:

动态ID问题:前端经常给元素加随机ID,比如id="btn-submit-abc123"。我们的解决方案是在提示词中强调:“避免使用ID定位,优先用CSS选择器,例如根据按钮文字‘提交’或父容器class来定位”。

异步加载弹窗:有些弹窗是AJAX加载的,DOM结构会动态变化。这时我们在提示词里补充:“对于弹窗类元素,使用presence_of_element_located而非visibility_of_element_located,确保元素已插入DOM即可”。

多步骤依赖:比如“先创建订单,再进入订单列表页找到刚创建的订单”。我们拆分成两个独立提示词,第一个生成创建脚本并返回订单号,第二个把订单号作为变量注入提示词:“在订单列表页搜索订单号{{order_id}}……”。

这些技巧不需要修改模型,纯粹靠提示词工程就能解决80%的边界情况。

4. 实际落地中的收益与注意事项

4.1 真实提升的效率指标

我们统计了过去三个月的测试脚本开发数据:

  • 新增测试用例平均编写时间从42分钟降至9分钟,效率提升78%
  • 脚本首次运行通过率从63%提升到89%,减少了大量调试时间
  • 新人工程师上手周期从2周缩短到3天,能独立编写基础用例
  • 维护成本降低约40%,因为生成的代码风格统一,定位问题更快

最直观的感受是,测试工程师终于能把精力从“怎么写代码”转移到“怎么设计用例”上。以前花半天写一个复杂流程的脚本,现在半小时就能生成初稿,剩下时间专注在业务逻辑验证和边界条件覆盖上。

4.2 那些它还做不到的事

必须坦诚地说,Yi-Coder-1.5B不是万能的。我们在实践中发现几个明确的边界:

  • 不理解私有组件库:如果项目用了自研的UI组件(比如封装过的表格组件),它无法识别内部结构,需要人工补充定位策略
  • 无法处理验证码:涉及图片验证码、滑块验证等安全机制的场景,仍需人工介入或集成专门的识别服务
  • 复杂断言能力有限:比如“验证图表数据趋势与上月相比增长15%”,它能生成获取数据的代码,但计算逻辑需要人工补全

我们的应对策略很务实:把AI当作高级代码补全工具,而不是全自动测试机器人。它负责生成80%的样板代码,工程师专注处理那20%需要领域知识的部分。

4.3 团队协作模式的转变

最大的改变其实是工作方式。现在我们建立了新的协作流程:

  1. 测试分析师写出自然语言用例(不再写伪代码)
  2. 测试工程师用提示词模板生成初版脚本
  3. 前端工程师参与Code Review,重点检查元素定位是否符合当前DOM结构
  4. 自动化脚本纳入CI流水线,每日构建时自动运行

这个流程让各角色回归本职:分析师专注业务逻辑,工程师专注技术实现,前端保障UI稳定性。意外的是,前端同事反馈说,他们现在更愿意提前提供稳定的CSS类名,因为知道这些会直接影响自动化脚本的健壮性。

5. 让AI测试真正为你所用的建议

回看这几个月的实践,有几个经验值得分享:

先从高频场景切入:不要一上来就挑战最复杂的流程。我们最先落地的是登录、列表搜索、表单提交这类重复度高、结构稳定的场景,快速建立团队信心后再逐步扩展。

建立自己的提示词库:把验证有效的提示词按场景分类存档,比如“表单操作类”、“弹窗处理类”、“数据校验类”。新成员入职时,直接提供这份“傻瓜式模板”,比讲原理更有效。

保持对生成代码的敬畏心:我们规定所有AI生成的代码必须经过人工审查才能合入主干。不是不信任AI,而是测试代码一旦出错,影响的是整个质量门禁。这种审慎态度反而让团队对AI的能力更加认可。

关注长期维护性:在提示词里强调“生成的代码要便于后续维护”,比如要求使用有意义的变量名、添加必要注释、避免过长的链式调用。短期看多花几秒,长期看节省的是无数调试时间。

最后想说的是,技术的价值不在于它有多炫酷,而在于能否让一线工程师少写几行重复代码、少熬几个夜、少背几次锅。Yi-Coder-1.5B带给我们的,正是这样一种踏实的生产力提升——它不取代测试工程师,而是让工程师更像一个真正的工程师。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 6:48:40

EcomGPT-7B开源镜像免配置教程:非技术人员30分钟上线电商AI辅助工具

EcomGPT-7B开源镜像免配置教程:非技术人员30分钟上线电商AI辅助工具 1. 这不是另一个“需要配环境”的AI项目——它真的能直接用 你是不是也见过太多标着“一键部署”的AI工具,结果点开就是满屏报错、conda环境冲突、CUDA版本不匹配、模型权重下载失败…

作者头像 李华
网站建设 2026/5/3 10:43:21

ANIMATEDIFF PRO部署教程:非root权限下启动服务与端口权限配置

ANIMATEDIFF PRO部署教程:非root权限下启动服务与端口权限配置 1. 为什么需要非root部署? 你可能已经试过直接运行 bash /root/build/start.sh,浏览器打开 http://localhost:5000 看到那套赛博玻璃风的 Cinema UI——很酷,但很快…

作者头像 李华
网站建设 2026/5/3 18:10:53

BGE-Large-Zh 语义向量化工具:5分钟快速部署中文文本匹配系统

BGE-Large-Zh 语义向量化工具:5分钟快速部署中文文本匹配系统 1. 引言 1.1 你是否也遇到过这些场景? 想快速验证一段中文问题和几十条文档之间的语义匹配效果,却卡在模型加载、环境配置、向量计算一堆步骤上?做知识库检索原型时…

作者头像 李华
网站建设 2026/5/3 8:50:19

Keil芯片包初学者教程:手把手教你完成首次安装

Keil芯片包:嵌入式开发里那个“看不见却不能没有”的关键拼图你有没有遇到过这样的场景?刚拿到一块崭新的STM32F407开发板,满怀期待地打开Keil uVision,新建工程、点开设备选择框——结果列表空空如也;或者好不容易选上…

作者头像 李华
网站建设 2026/5/2 22:41:25

告别音乐平台碎片化:MusicFreePlugins打造你的专属音乐中心

告别音乐平台碎片化:MusicFreePlugins打造你的专属音乐中心 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins 你是否也曾经历过这样的窘境:想听一首冷门歌曲,却发…

作者头像 李华
网站建设 2026/4/17 16:00:15

OpenSpeedy游戏性能优化工具:从问题诊断到深度优化的全流程指南

OpenSpeedy游戏性能优化工具:从问题诊断到深度优化的全流程指南 【免费下载链接】OpenSpeedy 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy 一、问题诊断:揭开游戏卡顿的神秘面纱 当你在《艾尔登法环》的BOSS战中正要释放致命一击&…

作者头像 李华