当前位置: 首页 > news >正文

SeleniumBase - 多合一浏览器自动化框架

手动编写Selenium脚本,繁琐且常遇“掉坑”?SeleniumBase来救场!这款基于Selenium的Python框架集测试、爬虫、RPA于一体,支持多浏览器、并行测试、CAPTCHA绕过和智能等待,堪称Web自动化的“瑞士军刀”。不少行业大佬盛赞:“SeleniumBase的智能等待和报表功能让自动化更高效!”数据显示,它可减少70%测试开发时间,测试稳定性提升85%。无论你是测试工程师、爬虫开发者还是RPA专家,本文从核心功能到实战案例,带你零基础玩转SeleniumBase

在自动化测试的技术浪潮中,Selenium以其开源、跨平台、多语言兼容的特性,长期占据着重要地位,为无数项目的质量保障立下汗马功劳。然而,随着敏捷开发和DevOps的深入推进,测试需求变得愈发复杂,不仅要应对频繁的迭代,还要处理动态页面、复杂交互以及多样化的测试场景。传统Selenium测试中,代码冗余、配置繁琐、断言单一等问题逐渐成为测试效率提升的阻碍。

SeleniumBase的出现,恰似为自动化测试领域注入一剂“强心针”。它以Selenium为基石,通过模块化设计、智能封装和丰富的功能扩展,有效简化测试流程,大幅提升测试脚本的可读性与可维护性。无论是Web应用的功能测试,还是复杂场景下的性能验证,SeleniumBase 都能以更高效、更稳定的姿态,帮助测试团队在快速变化的技术环境中,轻松应对挑战,让自动化测试迈向新的高度。

为什么越来越多的测试工程师选择SeleniumBase,而不是原生Selenium或Playwright?它到底解决了哪些痛点?今天这篇文,带你一次看懂这个“多合一”的自动化测试框架究竟有多香!

观点与案例结合

SeleniumBase基于Selenium/WebDriver,封装简洁API,集成pytest、behave等测试框架,支持多浏览器测试、并行执行、反爬(UC/CDP模式)和自动化报表。以下是五大核心步骤,附实战案例与代码,助你快速掌握。

SeleniumBase是一个功能强大的Python框架,适用于Web自动化活动的专业工具包。专为测试网站、绕过验证码、提高生产力、完成任务和拓展业务而打造。

SeleniumBase是基于Selenium构建的高阶框架,它内置了:
✅ 更简洁的 API
✅ 自动截图与报告功能
✅ 强大的断言库
✅ 原生支持pytest、unittest、Behave(支持BDD)
✅ 一行命令运行测试 + 生成Allure报告

比如一位某大厂的测试同学,以前维护原生Selenium脚本,一个登录流程代码就超过100行。用了SeleniumBase,变成了**5行搞定!**同时还有漂亮的失败截图+HTML报告,领导一眼就能看懂。

其主要特性如下:

核心功能

  • 录制模式:可自动生成Python浏览器测试代码。

  • 多浏览器支持:同一测试中支持多个浏览器、标签页、iframe和代理。

  • 测试用例管理:集成Markdown技术的测试用例管理软件。

  • 智能等待机制:自动智能等待提升测试可靠性,防止不稳定测试。

  • 多测试框架兼容:支持pytest、unittest、nose和behave查找/运行测试。

  • 开源透明:所有代码开源,可深入了解任何功能实现。

运行模式与性能优化

  • 无头模式:通过`--headless`参数在后台运行测试,隐藏浏览器界面。

  • 多线程执行:使用`-n NUM_THREADS`参数实现并行浏览器测试,提升效率。

  • 会话复用:通过`--reuse-session/--rs`参数在共享浏览器会话中运行测试。

高级测试能力

  • 移动设备模拟:使用`--mobile`参数通过Chromium的移动设备模拟器运行测试。

  • 代理支持:支持多种代理配置方式,包括普通代理、PAC URL、认证代理等。

  • 用户代理定制:通过`--agent=USER_AGENT_STRING`参数设置自定义浏览器用户代理。

  • 浏览器配置加载:使用`--user-data-dir=DIR`参数加载Chromium用户数据目录/配置文件。

  • 防检测机制:通过`--undetected/--uc`参数避免被试图阻止Selenium的网站检测到。

  • 请求检查:集成selenium-wire,通过`--wire`参数检查浏览器请求。

  • Chrome扩展支持:支持加载Chrome扩展ZIP文件或文件夹。

辅助工具与集成

  • 控制台脚本:提供强大的控制台命令(如`seleniumbase`或`sbase`)。

  • 多语言支持:可将测试翻译成多种口语语言。

  • 灵活的命令行界面:支持自定义测试运行参数。

  • 全局配置文件:可根据需要配置全局设置。

  • 交互式工具:包含创建交互式网页演示、图表、对话框、网站导览的工具。

  • GUI界面:提供SeleniumBase Commander图形界面运行pytest脚本。

  • CI/CD集成:支持GitHub Actions、Google Cloud、Azure、S3和Docker等持续集成工具。

特殊场景处理

  • 双因素认证支持:结合Python的一次性密码库处理Google Authenticator登录。

  • PDF文件处理:支持从网站或本地文件系统加载PDF文件并进行断言。

  • HTML检查:通过HTML Inspector检查HTML以发现问题和关注点。

  • JavaScript执行:可通过`self.execute_script()`从Python调用执行JavaScript代码。

  • Shadow DOM支持:通过在CSS选择器中添加`::shadow`穿透Shadow DOM。

  • 混合自动化:提供MasterQA混合自动化解决方案,加速手动测试。

  • 安全增强:包含实用的Python装饰器和密码混淆方法。

兼容性

  • 与Python WebDriver方法向后兼容,可通过`self.driver`直接访问底层WebDriver实例。

官方网址:https://seleniumbase.io/

1、环境搭建:开启SeleniumBase之旅

方式一:使用PyPI安装

pip install seleniumbase

方式二:使用GitHub克隆安装

git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase/
pip install -e .

 

输入seleniumbase或sbase以验证SeleniumBase是否已成功安装。

SeleniumBase会根据需要自动下载Web驱动程序,例如chromedriver。

SeleniumBase会自动处理常见的WebDriver操作,例如在测试之前启动Web浏览器、在失败期间保存屏幕截图以及在测试后关闭Web浏览器。

  1. 验证安装:运行seleniumbase install chromedriver并测试示例脚本。


  2. 代码(验证环境):

from seleniumbase import BaseCaseclass MyTest(BaseCase):def test_example(self):self.open("https://example.com")self.assert_text("Example Domain", "h1")if __name__ == "__main__":from pytest import mainmain([__file__])

案例:某测试团队5分钟完成SeleniumBase环境搭建,开始E2E测试。
实践:安装SeleniumBase,运行上述代码,验证example.com标题。

SeleniumBase支持所有主流浏览器和操作系统:

浏览器:Chrome、Edge、Firefox和Safari。

操作系统:Linux/Ubuntu、macOS和Windows。

2、快速上手

一些常见的SeleniumBase方法:

浏览器导航操作
self.open(url) - 导航到指定URL
self.go_back() - 返回上一页
self.get_current_url() - 获取当前页面URL
self.get_title() - 获取当前页面标题
self.get_page_source() - 获取当前页面HTML源代码元素交互操作
self.type(selector, text) - 在指定元素输入文本
self.click(selector) - 点击指定元素
self.click_link(link_text) - 点击包含指定文本的链接
self.select_option_by_text(dropdown_selector, option) - 在下拉菜单中选择指定文本的选项
self.hover_and_click(hover_selector, click_selector) - 先悬停在指定元素上,再点击另一个元素
self.drag_and_drop(drag_selector, drop_selector) - 执行拖放操作元素状态检查
self.get_text(selector) - 获取元素文本内容
self.get_attribute(selector, attribute) - 获取元素属性值
self.is_element_visible(selector) - 检查元素是否可见
self.is_text_visible(text, selector) - 检查文本在元素中是否可见窗口和框架操作
self.switch_to_frame(frame) - 切换到iframe
self.switch_to_default_content() - 从iframe切换回主文档
self.open_new_window() - 打开新窗口
self.switch_to_window(window) - 切换到指定窗口
self.switch_to_default_window() - 切换回默认窗口驱动和会话管理
self.get_new_driver(OPTIONS) - 使用指定选项创建新驱动
self.switch_to_driver(driver) - 切换到指定驱动
self.switch_to_default_driver() - 切换回默认驱动等待和断言
self.wait_for_element(selector) - 等待元素可见
self.sleep(seconds) - 强制等待指定秒数
self.assert_element(selector) - 断言元素可见
self.assert_text(text, selector) - 断言元素包含指定文本
self.assert_exact_text(text, selector) - 断言元素文本与指定文本完全一致
self.assert_title(title) - 断言页面标题
self.assert_downloaded_file(file) - 断言文件已下载
self.assert_no_404_errors() - 断言没有404错误
self.assert_no_js_errors() - 断言没有JavaScript错误其他操作
self.save_screenshot(name) - 保存当前页面截图

 

大多数SeleniumBase脚本都可以使用pytest、pynose或纯python运行。并非所有测试运行程序都可以运行所有测试格式。例如,使用sb pytest夹具的测试只能使用pytest运行。还有一种Gherkin测试格式,它与behave一起运行。

pytest coffee_cart_tests.py --rs
pytest test_sb_fixture.py --demo
pytest test_suite.py --rs --html=report.html --dashboardpynose basic_test.py --mobile
pynose test_suite.py --headless --report --show-reportpython raw_sb.py
python raw_test_scripts.pybehave realworld.feature
behave calculator.feature -D rs -D dashboard

pytest包括自动测试发现功能。如果未指定要运行的特定文件或文件夹,pytest将根据以下条件自动搜索所有子目录以查找要运行的测试:

以 test_ 开头或以 _test.py 结尾的 Python 文件。
以 test_ 开头的 Python 方法。

示例脚本,用于测试购物网站:

from seleniumbase import BaseCase
BaseCase.main(__name__, __file__) class MyTestClass(BaseCase):def test_swag_labs(self):self.open("https://www.saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")self.click('button[name*="backpack"]')self.click("#shopping_cart_container a")self.assert_text("Backpack", "div.cart_item")self.click("button#checkout")self.type("input#first-name", "SeleniumBase")self.type("input#last-name", "Automation")self.type("input#postal-code", "77123")self.click("input#continue")self.click("button#finish")self.assert_text("Thank you for your order!")

输入命令,执行脚本。

pytest test_get_swag.py

运行效果,可以看到执行速度很快。

执行脚本,生成测试报告方式一。

pytest test_get_swag.py --html=report.html

 

执行完成后,打开测试报告。

 

执行脚本,生成测试报告方式二。

pytest test_get_swag.py --dashboard --html=report.html

 

执行完成后,打开测试报告。

 

执行时断言报错,执行完成后,打开测试报告。

 

报错信息与截图也展示到测试报告里。

3.多浏览器测试:跨Chrome、Firefox、Edge

场景:在不同浏览器运行自动化测试,确保跨浏览器兼容性。
核心

  • 支持Chrome、Firefox、Edge、Safari等,命令行指定--browser=firefox。

  • 自动下载匹配的浏览器驱动(如ChromeDriver)。

  • 支持并行测试(--rs或pytest-xdist)。
    代码(多浏览器测试):

from seleniumbase import BaseCaseclass MultiBrowserTest(BaseCase):def test_login(self):self.open("https://saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")# 运行:pytest test_login.py --browser=chrome
# 或:pytest test_login.py --browser=firefox

案例:某电商APP用SeleniumBase测试跨浏览器登录,覆盖率提升90%。
实践:运行上述脚本,分别用Chrome和Firefox测试,观察结果。

4. 录制与生成:快速创建测试脚本

场景:用SeleniumBase录制器生成测试脚本,减少手动编码。
核心

  • 运行seleniumbase recorder启动录制器,记录浏览器操作。

  • 自动生成pytest格式的Python脚本。

  • 支持CSS/XPath自动检测,简化元素定位。


  • 代码(录制生成示例):

# 运行:seleniumbase recorder
# 录制后生成类似代码
from seleniumbase import BaseCaseclass RecordedTest(BaseCase):def test_recorded(self):self.open("https://example.com")self.type("input[name='q']", "SeleniumBase\n")self.assert_text("SeleniumBase", "#search")

案例:某团队用录制器生成登录测试脚本,开发时间从2小时降至10分钟。
实践:用录制器记录在example.com搜索“SeleniumBase”,运行生成脚本。

5. 反爬与UC模式:绕过CAPTCHA和Bot检测

场景:用UC模式(Undetected ChromeDriver)绕过网站反爬机制。
核心

  • UC模式(--uc)模拟真实用户浏览器指纹,规避Bot检测。

  • 支持代理(--proxy=IP:PORT)和自定义User-Agent。

  • 结合selenium-wire检查网络请求。
    代码(UC模式抓取数据):

from seleniumbase import BaseCaseclass WebScrapingTest(BaseCase):def test_scrape(self):self.set_uc_mode(True)  # 启用UC模式self.open("https://example.com/products")prices = self.find_elements(".price")for price in prices:print(price.text)self.save_screenshot("scraped_page.png")# 运行:pytest test_scrape.py --uc --proxy=IP:PORT

案例:某零售公司用UC模式抓取竞品价格,成功绕过Cloudflare,效率提升95%。
实践:运行上述脚本,抓取example.com元素,保存截图。

6. 实战案例:电商网站E2E测试与数据抓取

场景:自动化电商网站登录、添加商品到购物车并抓取订单数据。
步骤

  1. 用SeleniumBase录制登录和添加商品操作。

  2. 优化脚本,添加POM和报表。

  3. 用UC模式抓取订单数据,保存到CSV。


  4. 代码

from seleniumbase import BaseCase
import csvclass EcommerceTest(BaseCase):def test_e2e(self):# 登录self.open("https://saucedemo.com")self.type("#user-name", "standard_user")self.type("#password", "secret_sauce\n")self.assert_element("div.inventory_list")# 添加商品self.click('button[name*="backpack"]')self.click("#shopping_cart_container a")self.assert_text("Backpack", "div.cart_item")# 抓取订单数据items = self.find_elements("div.cart_item")with open("orders.csv", "w", newline="") as f:writer = csv.writer(f)writer.writerow(["Item"])for item in items:writer.writerow([item.text])# 生成报表self.save_screenshot("checkout.png")self.generate_report("e2e_report.html")# 运行:pytest test_e2e.py --dashboard --browser=chrome

案例:某电商用SeleniumBase实现E2E测试,测试周期从3天降至2小时,数据抓取效率提升90%。
实践:运行上述脚本,完成登录、添加商品并保存订单数据。

6. 优化与CI/CD集成

优化技巧

  • 智能等待:SeleniumBase自动等待元素可见/可交互,减少time.sleep()。

  • POM模式:封装页面元素,提高脚本复用性。

  • 报表与日志:用--dashboard生成HTML报表,--with-s3-logging保存至AWS S3。
    CI/CD集成

  • 用GitHub Actions或Jenkins运行并行测试。

  • 配置Docker容器,确保环境一致性。


  • 代码(GitHub Actions配置):

name: SeleniumBase Tests
on: [push]
jobs:test:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Pythonuses: actions/setup-python@v4with:python-version: '3.9'- name: Install dependenciesrun: pip install seleniumbase pytest-xdist- name: Run testsrun: pytest tests/ --browser=chrome --rs --dashboard

案例:某团队用GitHub Actions集成SeleniumBase,每天自动运行测试,缺陷检测率提升80%。
实践:配置GitHub Actions运行上述E2E测试,查看报表。

7. 注意事项与常见问题

注意事项

  • 浏览器驱动:确保ChromeDriver等与浏览器版本匹配,seleniumbase install chromedriver自动处理。

  • UC模式:反爬需配合代理,避免IP封禁。

  • 并行测试:用pytest-xdist需配置足够CPU资源。
    常见问题

  • 错误:ElementNotVisibleException

    • 解决:检查选择器或增加等待时间,优先用CSS选择器。

  • 错误:WebDriverException

    • 解决:更新浏览器和驱动,或检查代理配置。
      案例:某项目因驱动版本不匹配报错,用seleniumbase install修复后稳定运行。
      实践:模拟一个选择器错误,查看日志并修复。

社会现象分析

SeleniumBase引领了Web自动化新趋势。Gartner 2024报告显示,自动化测试和爬虫需求增长40%,多功能框架如SeleniumBase因易用性和集成性备受青睐。自动化平台热议其在测试和RPA中的高效表现,认为其“重新定义了Selenium的开发体验”。
开源社区(如SeleniumBase GitHub)的Star数超1万,超200个示例反映开发者热情。企业中,SeleniumBase广泛用于电商、金融和教育系统自动化,如某银行用其测试网银系统,效率提升75%。AI驱动的自动化工具也在崛起,但SeleniumBase的轻量性和Python生态优势使其仍占主流。

随着敏捷开发和持续交付的推进,测试不再只是“写测试用例”,而是自动化、平台化、可视化的综合能力。市场上充斥着各种“打补丁式”测试工具,而SeleniumBase正好满足当前企业对“快速搭建+功能齐全”的强烈需求,特别适合中小型团队快速落地自动化。

总结与升华

SeleniumBase通过多浏览器支持、录制器、UC模式和报表功能,将Selenium的复杂性化为简单高效。从环境搭建到E2E测试、数据抓取和CI/CD集成,五大步骤覆盖测试、爬虫和RPA全场景。掌握SeleniumBase,你不仅能解放双手,还能解锁Web自动化的无限可能。无论是测试工程师还是爬虫开发者,SeleniumBase都是你的核弹级武器,效率与创新一飞冲天!

SeleniumBase,不只是封装了Selenium,更是把测试人员从工具的泥沼中解救出来,让“写自动化”真正变成“像写脚本一样简单”。它所代表的,不仅是一种技术方案,更是一种“测试工程师也要站在工具链最前沿”的工作方式。

“写得快、跑得稳、报得美 —— 自动化本该如此。”
从今天起,给自己的测试框架,换上SeleniumBase这台高性能引擎吧!

 

相关文章:

  • 初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
  • leetcode hot100:一、解题思路大全:技巧(只出现一次的数字、多数元素、颜色分类、下一个排列、寻找重复数)、矩阵(矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵Ⅱ)
  • Python 训练营打卡 Day 29
  • 实战项目8(实训)
  • 迅联文库开发日志(三)登陆注册
  • python-判断闰年( 极其简单的python)
  • 嵌入式(C语言篇)Day11
  • C语法备注01
  • BGP选路
  • STM32 控制 OLED 全攻略(二):实现字符和汉字的显示
  • 【Vite】静态资源的动态访问
  • 4.6 sys模块
  • 数据库(一):分布式数据库
  • 【通用智能体】Lynx :一款基于终端的纯文本网页浏览器
  • 【计网】作业5
  • 【C++模板与泛型编程】实例化
  • 龙虎榜——20250519
  • C++ 函数对象、仿函数与 Lambda 表达式详解
  • Python中的整型(int)和浮点数(float)
  • vue3 vite 路由
  • 重庆对外经贸学院通报:一学生在体育课后不慎坠入化粪池,不幸遇难
  • 重庆一男大学生掉进化粪池死亡,重庆对外经贸学院:以学校通报为准
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”
  • 国内规模最大女子赛艇官方赛事在沪启航,中外41支队伍逐浪
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设