必知! Splinter 自动化测试为测试效率带来质的飞跃

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


当前,自动化测试已成为保障软件质量与提升开发效率的关键手段。随着项目规模的不断扩大和软件功能的日益复杂,传统的手动测试方式不仅耗时费力,而且容易出现人为失误,难以满足快速迭代的开发需求。自动化测试能够模拟用户的各种操作,快速、准确地执行大量测试用例,显著提高测试效率和覆盖率,为软件的稳定性和可靠性保驾护航。

Splinter作为一款基于Python的开源UI自动化测试工具,以其简洁易用的API和出色的浏览器交互能力,在UI自动化测试中发挥着重要作用 。它允许测试人员通过编写Python代码,轻松实现对浏览器的自动化控制,如访问网页、点击元素、填写表单等操作,极大地简化了UI自动化测试的流程。同时,结合DriverManager对浏览器驱动的智能管理,使得测试环境的搭建和维护更加便捷高效,为自动化测试工作带来了诸多便利。接下来,就让我们深入探索SplinterUI自动化测试中的精彩应用。

架构解析:Splinter 的"三层封装"设计

Splinter采用应用层-驱动层-协议层的三层架构:

  1. 1. 应用层:面向开发者的简洁API(如browser.click()

  2. 2. 驱动层:适配SeleniumZope等浏览器驱动

  3. 3. 协议层:基于WebDriver协议与浏览器通信

这种设计让Splinter具备:

  • • 跨浏览器兼容性:通过Browser('firefox')Browser('chrome', headless=True)一键切换浏览器内核

  • • 多语言扩展能力:支持通过JavaScript注入扩展功能(browser.execute_script()

  • • 协议级调试:借助browser.driver直接调用原生Selenium API进行底层调试

核心组件详解:Browser 对象与元素操控

1.Browser对象:浏览器会话管理中心

关键参数解析:

  • • incognito:隐私模式启动

  • • user_agent:自定义UA模拟移动端

  • • service_log_path:输出浏览器日志用于排错

2.元素定位九大武器

定位方式

示例代码

适用场景

CSS选择器

browser.find_by_css('#submit')

精准定位带id/class的元素

XPath

browser.find_by_xpath('//button')

复杂层级结构定位

文本内容

browser.find_by_text('登录')

按钮/链接文本定位

元素属性值

browser.find_by_value('提交')

表单元素定位

标签名

browser.find_by_tag('input')

快速获取同类元素

名称属性

browser.find_by_name('username')

表单name属性定位

ID属性

browser.find_by_id('search-box')

唯一性元素快速定位

链接部分文本

browser.find_link_by_href('/logout')

超链接定位

复合定位

browser.find_by_css('div.modal').find_by_text('确认')

嵌套元素定位

3.智能等待机制

Splinter内置两种等待策略:

'''
 @Author  : TesterRoad
 @Time    : 2025/3
 @Desc    : 公众号:测试工程师成长之路
 @Software: PyCharm
'''

# 显式等待(推荐)
# 10秒内检测元素出现
browser.is_element_present_by_css('.loading', wait_time=10)  

# 隐式等待(全局配置)
# 所有操作默认等待5秒
browser.driver.implicitly_wait(5)  

避免使用time.sleep()导致测试效率低下!

高阶功能:突破传统测试边界

1.浏览器沙盒环境管理

2.文件传输黑科技

'''
 @Author  : TesterRoad
 @Time    : 2025/4
 @Desc    : 公众号:测试工程师成长之路
 @Software: PyCharm
'''

# 绕过前端加密的文件上传
browser.attach_file('input[type="file"]', '/data/test.pdf')  

# 自动下载文件到指定目录
browser.visit('/export')
download_link = browser.find_link_by_text('下载报表')
download_link.click()

需配合webdriver.ChromeOptions()设置下载路径

3.动态元素捕获策略

这个函数的作用是等待一个动态元素出现在网页中。它会多次检查元素是否存在于页面中,并在元素存在时返回该元素。

企业级最佳实践

1.测试框架整合方案

推荐架构:

splinter_project/
├── pages/         # PageObject模式
├── conftest.py    # pytest夹具配置
├── testcases/     # 测试用例集
└── reports/       # Allure报告输出

2.分布式测试方案

通过Selenium Grid实现:

3.异常监控体系

性能对比:Splinter vs 原生Selenium

指标

Splinter

Selenium

优势点

元素定位语法

支持自然语言

仅标准选择器

开发效率提升40%

等待机制

智能复合等待

需手动实现

代码量减少60%

多浏览器支持

一行代码切换

需重写驱动配置

维护成本降低70%

企业级扩展

支持CI/CD集成

需二次开发

更适合敏捷团队

实战演示,保姆级教程

1.背景

对于电商网站,我们的测试需求主要聚焦在用户的核心操作流程上。首先,登录功能是用户进入网站的第一步,确保用户能够通过正确的账号和密码顺利登录,并且在输入错误信息时能得到准确的提示,是保障用户体验的关键。搜索功能则是用户查找商品的重要途径,我们需要验证用户输入关键词后,能否精准地筛选出相关商品,搜索结果是否符合预期,排序是否合理。而添加商品到购物车这一操作,涉及到商品信息的准确传递、购物车数量的实时更新以及商品重复添加的处理等多个方面,每一个细节都关乎用户的购物体验和交易的准确性。 只有全面、细致地分析这些测试需求,我们才能为后续的测试工作奠定坚实的基础,确保电商网站的各项功能稳定、可靠地运行。

2.测试用例设计

基于上述测试需求,我们设计了一系列测试用例。

测试场景

测试步骤

预期结果

登录

打开登录页面,输入正确的用户名和密码,点击登录按钮

成功登录,跳转到用户个人中心

登录

打开登录页面,输入错误的用户名或密码,点击登录按钮

弹出错误提示框,提示用户名或密码错误

搜索

在搜索框中输入商品关键词,点击搜索按钮

页面展示与关键词相关的商品列表

搜索

在搜索框中输入无效关键词(如特殊字符),点击搜索按钮

页面提示搜索关键词无效

添加商品到购物车

浏览商品列表,选择某一商品,点击 “添加到购物车” 按钮

商品成功添加到购物车,购物车中商品数量增加 1

添加商品到购物车

在购物车中已存在某商品的情况下,再次添加该商品

购物车中该商品数量增加 1,而非重复添加商品项

3.完整代码结构

splinter_project/
│
├── config.yaml
├── conftest.py
├── pages/
│   └── login_page.py
│   └── search_page.py
│   └── cart_page.py
└── tests/
    └── test_script.py
  1. 1. config.yaml:存储环境配置,包括测试环境的URL

  2. 2. conftest.py:提供fixture来初始化浏览器实例,并加载配置文件中的URL

  3. 3. base_page.py:封装基础页面操作,如访问URL、查找元素等。

  4. 4. 页面对象类:对于每个页面(例如登录页面、搜索页面和购物车页面)创建对应的类。

  5. 5. 测试脚本:使用上述fixture和页面对象来编写具体的测试用例。

4.安装 Splinter

pip install splinter
pip install webdriver-manager
# 如果下载失败,可使用以下命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple splinter

5.创建 config.yaml

6.创建 conftest.py

7.创建 base_page.py

8.创建 login_page.py

9.创建 search_page.py

10.创建 cart_page.py

11.编写测试脚本 test_script.py

以上示例代码仅供参考!

结语

小伙伴们,相信你们在UI自动化测试的道路上一定也积累了不少宝贵的经验和有趣的故事。欢迎在留言区分享你们使用Python + Splinter或其他工具进行UI自动化测试的心得体会,无论是成功的案例,还是遇到的挑战与解决方案,都能为大家带来启发和帮助。如果你在阅读本文的过程中有任何疑问,或者对文中的代码、方法有不同的见解,也请毫不犹豫地提出来,我们一起探讨交流。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值