SeleniumBase:让你的 Web 自动化 飞起来,告别手动 time.sleep() 的时代!
为什么选择 SeleniumBase?解决了哪些 Web 自动化 的痛点?
1. 原生 Selenium 的痛点:元素加载 慢、驱动 难管理、易被 Cloudflare 拦截、测试报告 简陋
在使用 Selenium 进行 Web 自动化 测试或 爬虫 开发时,你是否也遇到过以下问题:
- 元素加载 不及时:脚本跑得太快,元素 还没加载出来就报错,只能手动添加
time.sleep()
,效率低下且不稳定。 - 浏览器驱动 问题:手动下载和配置 Chrome/Firefox 驱动,版本不匹配导致测试经常出错。
- 反爬机制:被 Cloudflare 等 反爬 机制拦截,无法正常获取数据。
- 测试结果 难以整理:测试报告 不直观,需要手动整理数据,效率低下。
2. SeleniumBase 的解决方案:智能等待、自动驱动管理、UC 隐身模式、内置测试报告
SeleniumBase 通过深度封装 Selenium,提供了以下核心功能,完美解决了上述痛点:
- 智能等待机制:自动检测 元素 是否加载完毕,无需手动添加
time.sleep()
或WebDriverWait
。告别盲等,提高脚本运行效率和稳定性。例如,当你需要点击一个按钮时,SeleniumBase 会自动等待按钮加载完成,再执行点击操作,避免了 元素 未找到的错误。 - 多种编写方式:支持
BaseCase
类继承和SB
上下文管理器,满足不同开发习惯。无论你是喜欢面向对象编程还是上下文管理,SeleniumBase 都能满足你的需求。 - UC Mode 隐身模式:自动规避 Cloudflare、人机验证 等 反爬机制。让你轻松突破 反爬 封锁,获取所需数据。
- 自动驱动管理:无需手动下载 Chrome/Firefox 驱动,SeleniumBase 自动匹配 浏览器 版本。省去了繁琐的配置过程,让你可以专注于 测试 逻辑。
- 内置测试报告与仪表板:提供详细的 HTML 测试报告 和 实时仪表板,展示 测试通过率、失败详情 和 截图。让你对 测试 结果一目了然,方便问题排查和改进。
- 丰富断言和操作:提供许多 断言 方法、页面操作,代码更简洁,断言 更直观。例如,
self.assert_element("div.inventory_list")
可以快速 断言 页面上是否存在该 元素。
如何快速上手 SeleniumBase?安装与代码示例
1. 安装 SeleniumBase:一行命令搞定
SeleniumBase 是一个 Python 三方框架库,可以直接通过 pip
命令进行安装:
bash
pip install seleniumbase
或者通过下载项目源代码方式安装:
bash
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase/
pip install -e .
安装完成后,可以通过输入 seleniumbase
或 sbase
以验证 SeleniumBase 是否成功安装。
2. 代码示例:Google 搜索、绕过 Cloudflare、电商网站登录
示例 1:执行 Google 搜索
python
from seleniumbase import SB
with SB(test=True, uc=True) as sb:
sb.open(“https://google.com/ncr”)
sb.type(‘[title=”Search”]’, “SeleniumBase GitHub page\n”)
sb.click(‘[href*=”github.com/seleniumbase/”]’)
sb.save_screenshot_to_logs() # ./latest_logs/
print(sb.get_page_title())
这段代码演示了如何使用 SeleniumBase 打开 Google 搜索 页面,输入关键词并点击搜索结果,最后保存 截图 到日志。
示例 2:绕过 Cloudflare 验证页面
python
from seleniumbase import SB
with SB(uc=True, test=True, locale=”en”) as sb:
url = “https://gitlab.com/users/sign_in”
sb.activate_cdp_mode(url)
sb.uc_gui_click_captcha()
sb.sleep(2)
这段代码展示了 SeleniumBase 如何利用 UC Mode 绕过 Cloudflare 验证,让你轻松访问被保护的网站。
示例 3:登录一个 电子商务网站
python
from seleniumbase import BaseCase
BaseCase.main(name, file) # Call pytest
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(” 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!”)
这个示例演示了如何使用 SeleniumBase 模拟用户登录 电商网站,添加商品到 购物车 并完成 结算 流程。
示例 4:轻松输入、点击、选择、切换、拖放等
python
from seleniumbase import BaseCase
BaseCase.main(name, file)
class DemoSiteTests(BaseCase):
def test_demo_site(self):
# Open a web page in the active browser window
self.open(“https://seleniumbase.io/demo_page”)
# Assert the title of the current web page
self.assert_title(“Web Testing Page”)
………
# Hover & click a dropdown element and assert results
self.assert_text(“Automation Practice”, “h3”)
try:
self.hover_and_click(“#myDropdown”, “#dropOption2”, timeout=1)
except Exception:
# Someone probably moved the mouse while the test ran
self.hover_and_js_click(“#myDropdown”, “#dropOption2”)
self.assert_text(“Link Two Selected”, “h3”)
……..
# Assert exact text
self.assert_exact_text(“Demo Page”, “h1”)
# Highlight a page element (Also asserts visibility)
self.highlight(“h2”)
# Actions with Demo Mode enabled
if self.headed:
self.activate_demo_mode()
self.type(“input”, “Have a Nice Day!”)
self.assert_text(“SeleniumBase”, “h2”)
这段代码展示了 SeleniumBase 提供的各种便捷操作,例如 打开网页、断言标题、悬停并点击、高亮元素 等。
3. 更多用法:参考官方文档
更多关于 SeleniumBase API 的用法,请参考官方文档:https://seleniumbase.io
SeleniumBase 的应用场景:端到端测试、数据爬取、自动化工作流 等
1. 端到端测试:保障 Web 应用 质量
使用 SeleniumBase 自动化测试 Web 应用 的关键流程,如 登录、表单提交 等,确保 应用 功能的稳定性和可靠性。智能等待 机制可以有效避免因 元素加载 延迟导致的 测试 失败,内置测试报告 可以帮助你快速定位问题。
2. 数据爬取:助力 市场分析
利用 SeleniumBase 的 UC Mode 绕过 反爬检测,轻松抓取 电商、新闻网站 等数据,为 市场分析 提供有力支持。
3. 自动化工作流:提升 企业效率
使用 SeleniumBase 自动填写 表单、批量下载 文件,提升 企业 效率。例如,可以自动化操作 HR 系统,减少人工干预。
4. 教学与学习:自动化测试 入门利器
对于初学者来说,SeleniumBase 提供了丰富的 示例代码,可以帮助他们快速学习 自动化测试。对于 QA 工程师 来说,SeleniumBase 可以帮助他们快速上手 端到端测试。
5. CI/CD 集成:实现 自动化测试
将 SeleniumBase 与 Jenkins、GitHub Actions 集成,可以实现 自动化测试,并在 CI/CD 流程中自动运行 回归测试,生成 仪表板,确保代码质量。
总结:SeleniumBase,让 Web 自动化更简单、更可靠
SeleniumBase 深度封装 Selenium,通过 智能等待、UC Mode、自动驱动管理 和 炫酷报告 等功能,解决了 Web 自动化 脚本中 80% 的痛点问题。
无论你是 新手 入门、老手 提效、企业 做 UI 测试、还是 开发者 做 数据控制,SeleniumBase 都能帮助你用几行代码就能写出稳定、可靠的 Web 自动化 脚本,并自动生成炫酷 报告,让你的开发效率直接起飞!
GitHub 项目地址:https://github.com/seleniumbase/SeleniumBase
我认为:SeleniumBase 就像 Web 自动化领域里的一把瑞士军刀,功能全面且易于使用,它让原本繁琐的 Web 自动化工作变得简单而有趣,告别了手动 sleep 的痛苦,就像黑暗中突然出现了一盏明灯,指引着我们在自动化测试的道路上前进。虽然它并不能完全替代 Selenium,但它无疑是 Selenium 的一个强大的补充,让 Web 自动化测试不再让人头疼。