1、前言
在自动化测试的技术浪潮中,Selenium以其开源、跨平台、多语言兼容的特性,长期占据着重要地位,为无数项目的质量保障立下汗马功劳。然而,随着敏捷开发和DevOps的深入推进,测试需求变得愈发复杂,不仅要应对频繁的迭代,还要处理动态页面、复杂交互以及多样化的测试场景。传统Selenium测试中,代码冗余、配置繁琐、断言单一等问题逐渐成为测试效率提升的阻碍。
SeleniumBase的出现,恰似为自动化测试领域注入一剂“强心针”。它以Selenium为基石,通过模块化设计、智能封装和丰富的功能扩展,有效简化测试流程,大幅提升测试脚本的可读性与可维护性。无论是Web应用的功能测试,还是复杂场景下的性能验证,SeleniumBase 都能以更高效、更稳定的姿态,帮助测试团队在快速变化的技术环境中,轻松应对挑战,让自动化测试迈向新的高度。
2、简介
SeleniumBase是一个功能强大的Python框架,适用于Web自动化活动的专业工具包。专为测试网站、绕过验证码、提高生产力、完成任务和拓展业务而打造。
其主要特性如下:
核心功能
运行模式与性能优化
高级测试能力
辅助工具与集成
特殊场景处理
兼容性
官方网址:
https://seleniumbase.io/
3、安装
方式一:使用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浏览器。
SeleniumBase支持所有主流浏览器和操作系统:
浏览器:Chrome、Edge、Firefox和Safari。
操作系统:Linux/Ubuntu、macOS和Windows。
4、快速上手
一些常见的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 --dashboard
pynose basic_test.py --mobile
pynose test_suite.py --headless --report --show-report
python raw_sb.py
python raw_test_scripts.py
behave 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
执行完成后,打开测试报告。
执行时断言报错,执行完成后,打开测试报告。
报错信息与截图也展示到测试报告里。
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有