基于Cursor实现博客系统Web UI自动化--项目实战
一、自动生成测试用例
1.提示词
示例:以博客系统登录页面为例

@【截图】博客系统登录页面
根据图片提供的登录界面设计UI自动化测试用例,页面包含标题、导航栏和登录表单模块,要求:
1)用例包含登录功能(正常、异常)、导航栏的跳转、标题的验证
2)按照优先级设计用例数量在10以内
3)输出格式:用例名称、操作步骤,预期结果。内容具体,避免模糊的描述方式
4)将输出内容保存至“登录页面测试用例.md”文件中
2.生成结果
在项目路径下生成了一个登录页面测试用例.md文件。

生成的测试用例可能会和预期有点不符,咱们可以手动优化一下。

这里需要把文档改正
二、生成测试脚本
1.提示词
示例:以上面博客系统登录页面和测试用例为例
@登录页面测试用例.md
读取登录页面测试用例.md文档内容并生成测试脚本,要求:
1)使用Python+selenium实现自动化脚本编写
2)用例遵循pytest框架运行规则
3)测试方法命名要合理
4)每个测试用例都要对结果进行断言
5)不使用复杂设计模式
6)完全遵循以上要求,不要做额外拓展
2.生成结果

3.问题修复
每个人生成的结果不一定会是一样的,如果大家生成过程中出现如下问题可以看看。
1.驱动问题
pytest .\test_login_page.py::TestLoginPage::test_valid_login

由于本地在此之前已经下载过谷歌驱动,所以此处报错原因为版本不匹配
如果从未下载过浏览器驱动,报错会提示找不到驱动。
根据过往经验,该问题有两种解决方案:
- 方法一:手动下载与浏览器版本相匹配的驱动
- 方法二:使用 WebDriver Manager 自动下载驱动
课堂上重点推荐使用方法二(原因可跳转至测试直播课selenium课程内容学习)
先不要手动修改代码,尝试让AI自动修复代码。
提示词
@test_login_page.py @报错信息通过pytest命令运⾏脚本,出现报错
2.元素定位
AI是通过测试用例上提供的关键词进行元素的查找,如按照名称进行查找By.NAME,超链接文本
By.Link Texty以及枚举的方式(实际AI也不知道到底使用什么来准确定位元素)

提示词
@test_login_page.py @blog_login.html
根据页面源码blog_login.html文件,修改代码中获取对应元素的方式,避免出现页面元素查找不到的错误
4.参数化
1.提示词
分析脚本,利用pytest中的参数化操作精简用例数量
要求:
1)可合并的用例整合到同一个测试方法内
2)无法合并的用例保持原样,不强行合并导致代码可读性下降
2.生成结果

三、用例依赖
1.生成列表页用例
提示词
根据图片提供的列表界面设计UI自动化测试用例,页面包含个人信息(头像、GitHub地址、文章、分类)、导航栏(主页、写博客、注销)和博客列表(至少包含一条博客,每条博客包含标题、发布时间、博客内容、查看全文按钮),要求:
1)用例包含博客列表信息、个人信息的验证
2)按照优先级设计用例数量在10以内
3)输出格式:用例名称、操作步骤,预期结果。内容具体,避免模糊的描述方式
4)将输出内容保存至“列表页面测试用例.md”文件中
生成结果

生成的要是不符合预期的咱们需要手动优化一下。
2.生成测试脚本
提示词
读取列表页面测试用例.md内容和页面源码blog_list.html文件,生成列表页测试脚本,要求:
1)使用Python+selenium实现自动化脚本编写
2)用例遵循pytest框架运行规则
3)测试方法命名要合理
4)每个测试用例都要对结果进行断言
5)不使用复杂设计模式
6)完全遵循以上要求,不要做额外拓展
结果

列表页UI自动化脚本已经生成成功,但是代码是否存在问题呢?
至此我们就发现了,若只执行列表页的测试用例,所有测试用例将执行失败,是因为若想成功访问列表页面,需要先执行登陆操作。因此,无法直接执行列表页测试用例,需要先执行登录页测试用例。
正确执行顺序:test_login_page.py ===》test_list_page.py
用例依赖优化
按照前面的经验,我们可以使用pytest-order工具来解决这个问题,通过pytest-order工具,可以指定方法或类的执行顺序,这次我们使用AI来生成。
提示词:
使用pytest-order插件指定类的执行顺序,顺序依次为:test_login_page.py、test_list_page.py
3.结构化
从上面代码结构可以看出,每运行一个用例都需要重新创建driver对象启动浏览器,这样做会导致:
1)登录态不会被保存,导致列表页用例执行失败
2)大量重复的操作导致用例执行时间太长。
使用pytest中的conftest.py操作将类中定义的fixture标记方法管理起来,并重新修改作用域
提示词:
背景:登录成功后才能访问列表页,否则会自动跳转至登录页,导致列表页测试用例全部执行失败
重新优化代码设计,要求:
1)提取测试文件中的启动和关闭浏览器操作,封装为fixture标记的方法,使得所有用例执行前启动一次浏览器,执行结束后关闭一次浏览器
2)执行列表页每个测试用例之前需要保证已经存在登录态
3)不改变每个测试用例的逻辑
4)不要做过多拓展
- 提取浏览器启动/关闭操作封装至fixture,新建conftest.py文件,设置scope="session",保证整个测试会话仅启动一次浏览器。
- 新增ensure_login fixture,在访问列表页前维持有效登录状态,避免列表页用例因未登录跳转失败。
- 完整保留原有全部测试用例逻辑,仅调整代码依赖注入方式,不对用例业务逻辑做改动。
AI自动生成的代码可能还存在部分问题,可以结合自身经验适当调整,直至全部测试用例运行成功。
AI既能够依托页面源码精准定位页面元素,也可读取源码生成测试用例,但生成后的用例依旧需要人工优化完善。
四、Cursor 实现 Web UI 自动化实战完整流程
1.需求分析与用例设计
提示词:
根据附件提供的html文件,设计各个页面的UI自动化测试用例,为后续编写UI自动化测试脚本做准备,要求:
1)从功能和界面两方面进行设计
2)区分优先级,每个页面设计用例数量控制在10条以内
3)输出格式遵循博客系统测试用例模板.md,描述详实具体,禁止模糊表述
4)将生成内容保存到博客系统文件夹下的“博客系统页面测试用例.md”,文件不存在则自动创建
- 登录页(blog_login.html)设计9条测试用例
- 列表页(blog_list.html)设计7条测试用例
- 详情页(blog_detail.html)设计8条测试用例
- 编辑页(blog_edit.html)设计9条测试用例。
2.搭建项目框架
提示词
@博客系统页面测试用例.md
根据附件内容,帮我设计一套UI自动化目录结构。
技术栈要求:
1. 编程语言:Python
2. 测试框架:pytest
3. 自动化测试:selenium
4. 数据驱动:YAML
5. 报告:Allure
6. logging日志记录:日志分级输出,按天分割
7. 合理使用异常,避免使用复杂的设计模式
输出:只输出目录结构即可
生成结果:

如果不符合预期,需要手动优化一下
3.生成脚本
提示词:
@博客系统项目结构.md@博客系统页⾯测试用例.md@blog_detail.html@blog_edit.html@blog_list.html@blog_login.html结合附件中博客系统相关文件,严格按照各文件内容要求,在当前项目下生成web ui自动化测试
生成结果:

AI不仅可以生成代码,也可以协助解决代码报错。 仍需注意,虽然AI可以帮我们实现代码,但技术人员也需要具备一定的技术能力,否则可能存在无法驾驭AI的情况。
4.测试报告生成


更多推荐
所有评论(0)