SeleniumBase实战:浏览器自动化与反检测避坑指南
【免费下载链接】SeleniumBaseAPIs for browser automation, testing, and bypassing bot-detection. Includes CDP Mode: A stealthy configuration for chromium that passes every bot detection test.项目地址: https://gitcode.com/GitHub_Trending/se/SeleniumBase
SeleniumBase 是一套面向 Python 的一站式浏览器自动化框架,把开浏览器、等元素、断言、截图、出报告这些活打包成一个库,写测试、爬虫或隐身访问时,你不用再手搓 WebDriver 的样板代码。
3分钟装好 SeleniumBase
最短路径就一条命令,驱动和依赖包跟着一起装,不用手动配版本:
pip install seleniumbase然后在脚本里导入入口类:from seleniumbase import BaseCase。记住两个入口:BaseCase 走 pytest 风格测试;SB 是上下文管理器,给普通脚本用,脚本一退出浏览器自动关闭。
拿它实际干三件事
按场景挑入口就行,不用先把 API 全背下来:
写一个端到端登录测试
继承 BaseCase,一个方法就是一个用例,self.type() 一步完成"等元素出现、清空、输入":
from seleniumbase import BaseCase BaseCase.main(__name__, __file__) class MyTest(BaseCase): def test_login(self): self.goto("seleniumbase.io/simple/login") self.type("#username", "demo_user") self.type("#password", "secret_pass\n") self.assert_element("img#image1")用 pytest 一跑,失败时自动截图并生成测试报告。
从真实浏览器里抓数据
一次性抓取不用写测试类:with SB() as sb:直接开浏览器,拿到你要的文本就收工,块结束浏览器自动关闭。
用 CDP Mode 绕过机器人检测
站点有反爬时,换成 DevTools 协议直接操控 Chromium,不再走 WebDriver,检测这一关就能过:
from seleniumbase import sb_cdp sb = sb_cdp.Chrome() sb.goto("https://browserscan.net/bot-detection") sb.sleep(3) sb.quit()把 SeleniumBase 改成你自己的样子
用命令行参数改浏览器行为
无头、移动仿真、代理、语言都是命令行选项。比如 pytest 后加--headless,浏览器就不再弹窗。全部选项清单见 help_docs/ 目录。
按需才开隐身模式
普通测试走常规模式;要登录有防护的站点时传uc=True,或中途用sb.activate_cdp_mode()切换。不触发反爬时零性能损耗。
容易踩的坑
⚠️ 这 4 个是最高频的:
- 现象:pytest 提示"没有收集到测试"。原因:文件或方法名没以
test_开头。对策:文件命名test_xxx.py、方法命名test_xxx。 - 现象:元素找到了,点击却报"不可点击"。原因:被浮层挡住或元素未进入可交互状态。对策:改用
self.js_click()走 JS 层点击。 - 现象:脚本本地能跑,目标站点却弹验证码或 403。原因:标准 WebDriver 被反爬识别。对策:切到 CDP Mode 或 UC Mode 再跑。
- 现象:脚本跑完,任务管理器里还挂着 chrome 进程。原因:driver 没关。对策:用
with SB()上下文管理器,或在结尾调用sb.quit()。
接下来
- 想看能直接跑的例子,进 examples/ 目录,
cdp_mode/子目录专门演示反检测场景。 - 查方法签名和命令行选项细节,翻 help_docs/method_summary.md。
【免费下载链接】SeleniumBaseAPIs for browser automation, testing, and bypassing bot-detection. Includes CDP Mode: A stealthy configuration for chromium that passes every bot detection test.项目地址: https://gitcode.com/GitHub_Trending/se/SeleniumBase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考