前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Splinter - 一个用于Web应用程序自动化的简单且一致的API

Splinter - 一个用于Web应用程序自动化的简单且一致的API

作者头像
wangmcn
发布于 2025-06-09 05:22:24
发布于 2025-06-09 05:22:24
4900
代码可运行
举报
文章被收录于专栏:AllTests软件测试AllTests软件测试
运行总次数:0
代码可运行

1、前言

作为一名开发或者测试人员,你在测试 Web 应用时,是否常常被这些问题困扰:繁琐的页面元素定位,如同在茫茫大海里捞针;模拟用户交互操作时,不是这里出问题,就是那里不顺畅;还有那漫长的等待时间,严重影响测试效率,让本就紧张的开发周期变得更加捉襟见肘。

比如在测试一个电商网站时,需要模拟用户从登录、浏览商品、加入购物车到结算的一系列操作,期间可能会遇到页面加载缓慢,元素定位失败等问题,导致测试工作停滞不前。又或者在测试一个社交平台时,要验证点赞、评论、分享等功能,却因为模拟用户交互的复杂性,使得测试过程困难重重。这些问题不仅耗时费力,还容易遗漏一些潜在的缺陷,影响产品质量。

本篇将介绍的 Splinter,或许能为你解决这些难题,成为你的得力助手。

2、简介

Splinter 是用于 Web 应用自动化测试的 Python 库,提供简单一致的 API,支持多种自动化驱动(如 Selenium、Django、Flask、ZopeTestBrowser),可无缝切换至原始 Selenium 接口,兼顾易用性与灵活性。

主要特点:

  • 易于学习:该API的设计直观易懂,上手迅速。
  • 编码速度更快:无需与工具较劲,即可快速、可靠地实现浏览器交互自动化。
  • 功能强大:专为实际应用场景而设计,可防范常见的自动化异常情况。
  • 灵活:底层工具的使用途径从不隐藏。随时可使用原生Selenium。
  • 健壮性:支持多种自动化驱动程序(Selenium、Django、Flask、ZopeTestBrowser)。

为什么使用Splinter?

该项目有两个主要目标:

  • 在现有的浏览器自动化工具(如 Selenium)之上提供一个通用的高级API。该API是一个抽象层,对用户友好,旨在实现轻松、高效的脚本编写。
  • 提供内置功能,以解决浏览器自动化过程中的常见痛点。

Github地址:

https://github.com/cobrateam/splinter

3、安装

基本要求:

Splinter 官方支持 Python 3.8 及以上版本。

1、安装Splinter

(1)pip安装

安装最新版本,请在终端中运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install splinter

(2)从源代码安装

Splinter 的源代码托管在 GitHub 上。你可以使用 git 克隆该代码仓库,并进行安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone git://github.com/cobrateam/splinter.git
cd splinter
pip install .

2、安装驱动程序

使用额外参数进行安装。

当通过pip安装Splinter时,可以提供额外的参数。这些参数将自动安装所需驱动程序的最新版本。

以下是有效的额外参数

  • selenium
  • django
  • flask
  • zope.testbrowser

示例:

要自动安装包含selenium的Splinter:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install splinter[selenium]

4、快速上手

本例为购物网站购买商品:登录购物网站,选中商品并添加到购物车里,填写个人信息后提交订单。

首先, 导入 Browser 类并创建一个实例;

browser.visit 方法可访问任意网站;

browser.find_by_name/id/xpath... 进行元素定位;

.fill('xxx') 输入框输入内容;

.click() 点击操作;

browser.is_text_present('xxx') 检查页面上是否有输入的文本信息;

browser.screenshot('xxx.png') 截取当前屏幕截图;

browser.quit 关闭浏览器。

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from splinter import Browser

browser = Browser('firefox')
browser.visit('https://www.saucedemo.com/')
browser.find_by_name('user-name').fill('standard_user')
browser.find_by_name('password').fill('secret_sauce')
browser.find_by_id('login-button').click()

browser.find_by_id('add-to-cart-sauce-labs-backpack').click()
browser.find_by_xpath('//*[@id="shopping_cart_container"]/a').click()
browser.find_by_id('checkout').click()

browser.find_by_name('firstName').fill('Meng')
browser.find_by_name('lastName').fill('Test')
browser.find_by_name('postalCode').fill('001')
browser.find_by_id('continue').click()
browser.find_by_id('finish').click()

if browser.is_text_present('Thank you for your order!'):
    print("完成订单成功!")
else:
    print("完成订单失败!")

screenshot_path = browser.screenshot('D:\TestDemo\your_screenshot.png', full=True)

browser.quit()

运行结束后,执行成功,日志打印:完成订单成功!

屏幕截图保存下来的图片,也可以看到订单已完成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验