SeleniumBase 控制台命令完全指南:sbase 全命令手册(驱动管理、录制生成、Page Object、Selenium Grid)
SeleniumBase 提供了一整套命令行工具(Console Scripts),通过 seleniumbase [COMMAND] [PARAMETERS](简写 sbase [COMMAND] [PARAMETERS])即可完成 WebDriver 下载、测试脚手架搭建、用例录制、翻译、Page Object 重构、代理启动与 Selenium Grid 集群管理等一系列高频操作。本文以仓库 seleniumbase/console_scripts/ReadMe.md 为骨架,结合 run.py 等源码实现,系统讲解每个命令的用法、参数、输出与底层原理,读完即可把 SeleniumBase 的命令行工作流直接落地到日常测试开发中。
命令入口:seleniumbase / sbase / python -m seleniumbase
SeleniumBase 安装后会在环境中注册两个等价的可执行命令。在 setup.py 的 entry_points 中可以找到它们的定义:
entry_points={
"console_scripts": [
"seleniumbase = seleniumbase.console_scripts.run:main",
"sbase = seleniumbase.console_scripts.run:main", # Simplified name
"seleniumbase-mcp = mcp_servers.server:main", # Requires [mcp]
],
...
}
两者都指向 seleniumbase/console_scripts/run.py 中的 main() 函数,sbase 只是短别名。此外,还可以通过 python -m seleniumbase [COMMAND] 的方式调用(见 seleniumbase/main.py)。
- 用法:
seleniumbase [COMMAND] [PARAMETERS] - 简写:
sbase [COMMAND] [PARAMETERS] - 查看全部命令:
seleniumbase --help - 查看单个命令详情:
sbase help [COMMAND](例如sbase help mkdir) - 运行测试请使用 pytest 结合 SeleniumBase 插件,详见 help_docs/customizing_test_runs.md
从 run.py 的 main() 源码可以看到,命令分发逻辑非常简单:第一个参数作为命令名,其余参数作为命令参数;命令名统一转为小写后进入分支处理。不带任何参数时,会打印 SeleniumBase Logo、包安装位置、版本号与命令总览(对应 show_basic_usage(),run.py)。
命令总览
COMMANDS:
get / install [DRIVER] [OPTIONS]
methods (List common Python methods)
options (List common pytest options)
behave-options (List common behave options)
gui / commander [OPTIONAL PATH or TEST FILE]
behave-gui (SBase Commander for Behave)
caseplans [OPTIONAL PATH or TEST FILE]
mkdir [DIRECTORY] [OPTIONS]
mkfile [FILE.py] [OPTIONS]
mkrec / codegen [FILE.py] [OPTIONS]
recorder (Open Recorder Desktop App.)
record (If args: mkrec. Else: App.)
mkpres [FILE.py] [LANG]
mkchart [FILE.py] [LANG]
print [FILE] [OPTIONS]
translate [SB_FILE.py] [LANG] [ACTION]
convert [WEBDRIVER_UNITTEST_FILE.py]
extract-objects [SB_FILE.py]
inject-objects [SB_FILE.py] [OPTIONS]
objectify [SB_FILE.py] [OPTIONS]
revert-objects [SB_FILE.py] [OPTIONS]
encrypt / obfuscate
decrypt / unobfuscate
proxy (Start a basic proxy server)
download server (Get Selenium Grid JAR file)
grid-hub [start|stop] [OPTIONS]
grid-node [start|stop] --hub=[HOST/IP]
这些命令可归纳为六类:驱动与浏览器管理(get/install)、信息查询(methods/options/behave-options)、测试工程搭建(mkdir/mkfile/mkrec/recorder/codegen)、代码转换与重构(translate/convert/print/objectify 系列)、安全工具(encrypt/decrypt)以及基础设施(proxy/download server/grid-hub/grid-node),下面逐一深入。
驱动与浏览器二进制管理:get / install
WebDriver 是浏览器自动化的前提。get 与 install 完全等价,负责把驱动下载到 seleniumbase/drivers/ 目录(源码位于 seleniumbase/console_scripts/sb_install.py)。
sbase get [DRIVER] [OPTIONS]
sbase install [DRIVER] [OPTIONS]
常用示例
sbase get chromedriver
sbase get geckodriver
sbase get edgedriver
sbase get chromedriver 149
sbase get chromedriver 149.0.7827.155
sbase get chromedriver stable
sbase get chromedriver beta
sbase get chromedriver -p
sbase get chromium
sbase get chromium --revision=1639046
sbase get cft 149
sbase get chs
支持的目标
- WebDriver:
chromedriver(Chrome 自动化必需)、geckodriver(Firefox 自动化必需)、edgedriver(Edge 自动化必需)、uc_driver(undetected-chromedriver) - 浏览器二进制:
cft(Chrome for Testing 可执行文件)、chs(Chrome-Headless-Shell 二进制)、chromium(基础 Chromium 二进制)
从 sb_install.py 的模块文档可以看到,驱动下载后统一存放于 seleniumbase/drivers/,其中各浏览器驱动的子目录为 chromium_drivers、chs_drivers、cft_drivers 等(见仓库 seleniumbase/drivers 目录结构)。
参数说明
NUM: 指定驱动版本号,可以是主版本整数(如 149)或完整版本号(如 149.0.7827.155)。
若不指定,驱动版本将自动匹配本机已安装的浏览器版本。
-p / --path: 同时把驱动复制到 /usr/local/bin,方便加入系统 PATH。
--revision: 指定要下载的 Chromium revision(如 1639046),不指定则下载最新版。
源码层面还有一个值得注意的细节:run.py 在分发 get/install 命令时做了下载容错——首次失败会等待 3 秒重试,再次失败等待 5 秒后第三次尝试(run.py);同时支持 --proxy= 参数透传,下载走代理时使用 proxy_helper.validate_proxy_string() 校验代理串格式。
信息查询:methods / options / behave-options
三个查询命令帮助开发者快速回忆 API 与参数,无需翻文档。
sbase methods
sbase methods
输出 SeleniumBase 常用 Python 方法清单,例如(节选自 run.py 的 show_methods()):
self.goto(url) => 导航浏览器到指定 URL
self.type(selector, text) => 向输入框填充文本
self.click(selector) => 点击指定元素
self.click_link(link_text) => 点击包含文本的链接
self.wait_for_element(selector) => 等待元素可见
self.assert_element(selector) => 断言元素可见
self.assert_text(text, selector) => 断言元素内包含文本
self.assert_no_404_errors() => 断言页面无死链
self.assert_no_js_errors() => 断言无 JavaScript 错误
...
这些方法的完整实现位于 seleniumbase/fixtures/base_case.py,方法速查可参考 help_docs/method_summary.md。
sbase options
sbase options
输出使用 SeleniumBase 时可用的 pytest 命令行选项(来自 show_options(),run.py)。完整列表如下:
--browser=BROWSER (The web browser to use. Default is "chrome")
--edge / --firefox / --safari (Shortcut for browser selection.)
--headless (Run tests headlessly. Default mode on Linux OS.)
--demo (Slow down and visually see test actions as they occur.)
--slow (Slow down the automation. Faster than using Demo Mode.)
--rs / --reuse-session (Reuse browser session between tests.)
--crumbs (Clear all cookies between tests reusing a session.)
--maximize (Start tests with the web browser window maximized.)
--dashboard (Enable SeleniumBase's Dashboard at dashboard.html)
--incognito (Enable Chromium's Incognito mode.)
--guest (Enable Chromium's Guest Mode.)
--dark (Enable Chromium's Dark Mode.)
--uc (Use undetected-chromedriver to evade detection.)
-m=MARKER (Run tests with the specified pytest marker.)
-n=NUM (Multithread the tests using that many threads.)
-v (Verbose mode. Print the full names of each test run.)
--html=report.html (Create a detailed pytest-html report.)
--collect-only / --co (Only show discovered tests. No run.)
--co -q (Only show full names of discovered tests. No run.)
-x (Stop running tests after the first failure is reached.)
--pdb (Enter the Post Mortem Debug Mode after any test fails.)
--trace (Enter Debug Mode immediately after starting any test.)
| Debug Mode Commands >>> help / h: List all commands. |
| n: Next line of method. s: Step through. c: Continue. |
| return / r: Run until method returns. j: Jump to line. |
| where / w: Show stack spot. u: Up stack. d: Down stack. |
| longlist / ll: See code. dir(): List namespace objects. |
--help / -h (Display list of all available pytest options.)
--final-debug (Enter Final Debug Mode after each test ends.)
--recorder / --rec (Save browser actions as Python scripts.)
--rec-sb-mgr (Save Recorder actions as SB() context manager.)
--rec-sb-cdp (Save Recorder actions as Pure CDP Mode sb_cdp.)
--rec-behave / --rec-gherkin (Save actions as Gherkin code.)
--rec-print (Display recorded scripts when they are created.)
--save-screenshot (Save a screenshot at the end of each test.)
--archive-logs (Archive old log files instead of deleting them.)
--check-js (Check for JavaScript errors after page loads.)
--start-page=URL (The browser start page when tests begin.)
--agent=STRING (Modify the web browser's User-Agent string.)
--mobile (Use Chromium's mobile device emulator during tests.)
--metrics=STRING (Set mobile "CSSWidth,CSSHeight,PixelRatio".)
--ad-block (Block some types of display ads after page loads.)
--settings-file=FILE (Override default SeleniumBase settings.)
--env=ENV (Set the test env. Access with "self.env" in tests.)
--data=DATA (Extra test data. Access with "self.data" in tests.)
--disable-csp (Disable the Content Security Policy of websites.)
--remote-debug (Sync to Ch-R-Debugger chrome://inspect/#devices)
--server=SERVER (The Selenium Grid server/IP used for tests.)
--port=PORT (The Selenium Grid port used by the test server.)
--proxy=SERVER:PORT (Connect to a proxy server:port for tests.)
--proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server.)
几个高频选项的实战解读:
--demo/--slow:Demo 模式会放慢并可视化每一步操作(高亮点击的元素),--slow是比 Demo Mode 更快的减速模式。Demo Mode 的详细配置见 help_docs/demo_mode.md。--uc:启用 undetected-chromedriver 规避机器人检测,底层实现见 seleniumbase/undetected,使用场景与限制见 help_docs/uc_mode.md。-n=NUM:pytest-xdist 多线程并发,直接决定并行度。--recorder / --rec:把浏览器操作录制为 Python 脚本,录制原理见 help_docs/recorder_mode.md。--env=ENV/--data=DATA:注入运行时环境变量与数据,测试内通过self.env、self.data读取。
完整选项列表可通过 pytest --help 查看。
sbase behave-options
sbase behave-options
输出使用 SeleniumBase 时的 Behave(BDD)命令行选项(来自 show_behave_options(),run.py)。Behave 模式下选项统一以 -D 前缀传入:
-D browser=BROWSER (The web browser to use. Default is "chrome")
-D headless (Run tests headlessly. Default mode on Linux OS.)
-D demo (Slow down and visually see test actions as they occur.)
-D slow (Slow down the automation. Faster than using Demo Mode.)
-D reuse-session / -D rs (Reuse browser session between tests.)
-D crumbs (Clear all cookies between tests reusing a session.)
-D maximize (Start tests with the web browser window maximized.)
-D dashboard (Enable SeleniumBase's Dashboard at dashboard.html)
-D incognito (Enable Chromium's Incognito Mode.)
-D guest (Enable Chromium's Guest Mode.)
-D dark (Enable Chromium's Dark Mode.)
-D uc (Use undetected-chromedriver to evade detection.)
--no-snippets / -q (Quiet mode. Don't print snippets.)
--dry-run / -d (Dry run. Only show discovered tests.)
--stop (Stop running tests after the first failure is reached.)
-D pdb (Enter the Post Mortem Debug Mode after any test fails.)
| Debug Mode Commands >>> help / h: List all commands. |
| n: Next line of method. s: Step through. c: Continue. |
| return / r: Run until method returns. j: Jump to line. |
| where / w: Show stack spot. u: Up stack. d: Down stack. |
| longlist / ll: See code. dir(): List namespace objects. |
-D recorder (Record browser actions to generate test scripts.)
-D rec-print (Display recorded scripts when they are created.)
-D save-screenshot (Save a screenshot at the end of each test.)
-D archive-logs (Archive old log files instead of deleting them.)
-D check-js (Check for JavaScript errors after page loads.)
-D start-page=URL (The browser start page when tests begin.)
-D agent=STRING (Modify the web browser's User-Agent string.)
-D mobile (Use Chromium's mobile device emulator during tests.)
-D metrics=STRING (Set mobile "CSSWidth,CSSHeight,PixelRatio".)
-D ad-block (Block some types of display ads after page loads.)
-D settings-file=FILE (Override default SeleniumBase settings.)
-D env=ENV (Set the test env. Access with "self.env" in tests.)
-D data=DATA (Extra test data. Access with "self.data" in tests.)
-D disable-csp (Disable the Content Security Policy of websites.)
-D remote-debug (Sync to Ch-R-Debugger chrome://inspect/#devices)
-D server=SERVER (The Selenium Grid server/IP used for tests.)
-D port=PORT (The Selenium Grid port used by the test server.)
-D proxy=SERVER:PORT (Connect to a proxy server:port for tests.)
-D proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server.)
可见 pytest 与 Behave 两套选项语义完全对齐,只是前缀不同(--xxx 与 -D xxx)。Behave 集成与 BDD 脚手架见仓库 examples/behave_bdd 与 integrations/behave。完整选项通过 behave --help 查看。
可视化测试管理:gui / commander、behave-gui、caseplans
gui / commander:SeleniumBase Commander
sbase gui [OPTIONAL PATH or TEST FILE]
sbase commander [OPTIONAL PATH or TEST FILE]
不带参数启动图形界面,也可直接传入测试文件或目录进行预筛选,例如:
sbase gui
sbase gui -k agent
sbase gui -m marker2
sbase gui test_suite.py
sbase gui offline_examples/
Commander 会把你选择的选项组装成真实的 pytest 命令来运行测试。从 sb_commander.py 源码可以看到其命令拼接逻辑:根据界面勾选,动态追加 --edge/--firefox/--safari、--rs/--rcs/--crumbs、-n=2..8(多线程)、--demo、--mobile、--dashboard、--html=report.html、--headless 等参数;在 Linux 非 headless 环境还会自动追加 --gui。Commander 的完整功能说明见 help_docs/commander.md。
behave-gui:Behave 版 Commander
sbase behave-gui [OPTIONAL PATH or TEST FILE]
sbase gui-behave [OPTIONAL PATH or TEST FILE]
示例:
sbase behave-gui
sbase behave-gui -i=calculator
sbase behave-gui features/
sbase behave-gui features/calculator.feature
-i=calculator 用于按名称过滤 Feature。此命令启动面向 Behave 的图形化运行器,可以指定 Feature 文件或 features 目录(对应源码 sb_behave_gui.py),详见 help_docs/behave_gui.md。
caseplans:用例计划生成器
sbase caseplans [OPTIONAL PATH or TEST FILE]
示例:
sbase caseplans
sbase caseplans -k agent
sbase caseplans -m marker2
sbase caseplans test_suite.py
sbase caseplans offline_examples/
为测试生成可读的"用例计划"文档(每个测试方法的步骤说明,对应源码 sb_caseplans.py)。仓库 examples/case_plans 中已有多份生成好的案例,例如 test_demo_site.DemoSiteTests.test_demo_site.md,可直观了解输出效果;使用说明见 help_docs/case_plans.md。
项目脚手架:mkdir 与 mkfile
sbase mkdir:一键生成测试工程目录
sbase mkdir [DIRECTORY] [OPTIONS]
示例:sbase mkdir ui_tests
选项:
-b / --basic (Only config files. No tests added.)
--gha (Include GitHub Actions YML with defaults.)
默认输出(完整工程模板):
ui_tests/
├── __init__.py
├── my_first_test.py
├── parameterized_test.py
├── pytest.ini
├── requirements.txt
├── setup.cfg
├── test_demo_site.py
└── boilerplates/
├── __init__.py
├── base_test_case.py
├── boilerplate_test.py
├── classic_obj_test.py
├── page_objects.py
├── sb_fixture_test.py
└── samples/
├── __init__.py
├── google_objects.py
├── google_test.py
├── sb_swag_test.py
└── swag_labs_test.py
使用 -b / --basic 时只生成配置,不包含示例测试:
ui_tests/
├── __init__.py
├── pytest.ini
├── requirements.txt
└── setup.cfg
使用 --gha 时额外生成 GitHub Actions 工作流:
ui_tests/
└── .github
└── workflows/
└── python-package.yml
源码细节(sb_mkdir.py):目录名必须至少 2 个字符、不能含 / 或 \、不能以 - 开头,且目标目录已存在时会直接报错;生成的 requirements.txt 会自动写入当前安装的 SeleniumBase 版本约束(如 seleniumbase>=4.x.x)。生成的脚手架对应仓库 examples/boilerplates 中的同构模板。
sbase mkfile:生成测试文件样板
sbase mkfile [FILE.py] [OPTIONS]
示例:sbase mkfile new_test.py
选项:
--uc (UC Mode boilerplate using SB context manager)
-b / --basic (Basic boilerplate / single-line test)
-r / --rec (Adds Pdb+ breakpoint for Recorder Mode)
--url=URL (Makes the test start on a specific page)
语言选项(生成对应语言的测试代码):
--en / --English | --zh / --Chinese
--nl / --Dutch | --fr / --French
--it / --Italian | --ja / --Japanese
--ko / --Korean | --pt / --Portuguese
--ru / --Russian | --es / --Spanish
语法格式选项:
--bc / --basecase (BaseCase class inheritance)
--pf / --pytest-fixture (sb pytest fixture)
--cf / --class-fixture (class + sb pytest fixture)
--cm / --context-manager (SB context manager)
--dc / --driver-context (DriverContext manager)
--dm / --driver-manager (Driver manager)
输出说明:创建一个新的 SBase 测试文件样板;文件已存在时报错。默认使用英文 + BaseCase 继承格式,样板中包含 open、type、click、assert_element、assert_text 等常用方法调用(部分源码注释中亦写作 goto,见 run.py);--basic 样板只含 open 一个方法;只有 BaseCase 格式支持语言选项与 Recorder 模式;UC Mode 固定使用英文 + SB() 上下文管理器格式。
这六种语法格式对应 SeleniumBase 支持的全部测试编写范式,每种范式的真实示例分别散落在仓库中:BaseCase 继承见 examples/my_first_test.py,pytest fixture 见 examples/test_sb_fixture.py,context manager 见 examples/raw_sb.py,DriverContext 见 examples/raw_driver_context.py,Driver Manager 见 examples/raw_driver_manager.py。
录制与代码生成:mkrec / codegen / record / recorder
SeleniumBase Recorder 可以边操作浏览器边把动作实时转录为 Python 测试代码。
sbase mkrec [FILE.py] [OPTIONS]
sbase codegen [FILE.py] [OPTIONS]
mkrec 与 codegen 完全等价;record 则是一个智能别名——带参数时等同 mkrec,不带参数时启动 Recorder 桌面应用(分发逻辑见 run.py)。
示例:
sbase mkrec new_test.py
sbase mkrec new_test.py --url=seleniumbase.io
sbase codegen new_test.py
sbase codegen new_test.py --url=wikipedia.org
选项:
--url=URL (Sets the initial start page URL.)
--edge (Use Edge browser instead of Chrome.)
--gui / --headed (Use headed mode on Linux.)
--uc / --undetected (Use undetectable mode.)
--ee (Use SHIFT + ESC to end the recording.)
--overwrite (Overwrite file when it exists.)
--behave (Also output Behave/Gherkin files.)
输出:使用 Recorder 创建新的 SeleniumBase 测试,文件已存在时报错(源码见 sb_mkrec.py)。若指定 --behave,还会额外生成 Behave/Gherkin 格式的 Feature 文件,可直接配合 BDD 流程使用。
recorder:Recorder 桌面应用
sbase recorder [OPTIONS]
选项:
--uc / --undetected (Use undetectable mode.)
--behave (Also output Behave/Gherkin files.)
输出:启动 SeleniumBase Recorder 桌面应用(实现见 sb_recorder.py,桌面壳 examples/desktop_apps/recorder.py)。录制的完整工作流与快捷键见 help_docs/recorder_mode.md。
演示与图表:mkpres / mkchart
sbase mkpres:生成演示文稿
sbase mkpres [FILE.py] [LANG]
示例:sbase mkpres new_presentation.py --en
语言选项与其他命令一致(--en/--zh/--nl/--fr/--it/--ja/--ko/--pt/--ru/--es)。
输出:创建一个含 3 张示例幻灯片的演示文稿(文件已存在时报错),默认英文、serif 主题、slide 切换效果,可作为演示框架的起始样板。SeleniumBase 演示文稿 API 的真实用例见 examples/presenter,核心实现位于 seleniumbase/core/presentation_utils.py(源码可确认其在 seleniumbase/core 目录下)。
sbase mkchart:生成图表演示
sbase mkchart [FILE.py] [LANG]
示例:sbase mkchart new_chart.py --en
输出:创建一个新的 SeleniumBase 图表演示文稿(文件已存在时报错),默认英文、sky 主题、slide 切换效果。图表相关示例见 examples/chart_maker(如 test_line_chart.py、pie_charts.py)。
源码辅助工具:print / translate / convert
sbase print:带语法高亮打印文件
sbase print [FILE] [OPTIONS]
选项:-n(为每行添加行号)。
输出:以语法高亮形式打印任意文件内容,实现见 sb_print.py。
sbase translate:测试多语言互译
sbase translate [SB_FILE.py] [LANGUAGE] [ACTION]
语言选项:
--en / --English | --zh / --Chinese
--nl / --Dutch | --fr / --French
--it / --Italian | --ja / --Japanese
--ko / --Korean | --pt / --Portuguese
--ru / --Russian | --es / --Spanish
动作(必须指定一个):
-p / --print (Print translation output to the screen)
-o / --overwrite (Overwrite the file being translated)
-c / --copy (Copy the translation to a new `.py` file)
附加选项:-n(使用 Print 动作时显示行号)。
输出:把 SeleniumBase Python 测试文件翻译成指定语言,方法调用与 import 行会被自动替换。-p 可以与另外任一动作组合;使用 -c/--copy 时新文件名 = 原名 + _ + 两位语言代码,例如把 test_1.py 翻译成日语会生成 test_1_ja.py。实现见 seleniumbase/translate/translator.py,各语言词典在 seleniumbase/translate 目录(chinese.py、japanese.py 等),翻译后的真实示例见 examples/translations(如 chinese_test_1.py),语言机制说明见 help_docs/translations.md。
sbase convert:Selenium IDE 脚本迁移
sbase convert [WEBDRIVER_UNITTEST_FILE.py]
输出:把 Selenium IDE 导出的 WebDriver unittest 文件转换为 SeleniumBase 文件,新文件名追加 _SB 后缀,原始文件保持不变;同时支持 Katalon Recorder 导出的 Selenium 脚本。实现位于 seleniumbase/utilities/selenium_ide(convert_ide.py),更完整的迁移方法论见 examples/migration(含 protractor、raw_selenium 到 SeleniumBase 的迁移示例)。
Page Object 四件套:extract-objects / inject-objects / objectify / revert-objects
这组命令围绕 Page Object 模式工作,核心文件是测试同目录下的 page_objects.py,实现集中在 sb_objectify.py。
extract-objects:提取选择器
sbase extract-objects [SB_FILE.py]
根据 SeleniumBase Python 文件中出现的选择器自动创建 Page Object,并把对象定义保存到同目录的 page_objects.py。对应仓库 examples/boilerplates/page_objects.py 展示的即这类对象文件的标准形态。
inject-objects:注入对象引用
sbase inject-objects [SB_FILE.py] [OPTIONS]
选项:-c / --comments(把对象选择器以注释形式附加到对应行)。
读取 page_objects.py 中的对象定义,将文件中匹配的选择器替换为对象变量名。
objectify:一步到位
sbase objectify [SB_FILE.py] [OPTIONS]
选项:-c / --comments(附加选择器注释)。
输出一个"选择器被替换为变量名"的新版本文件,等价于先 extract-objects 再 inject-objects 的合并结果,用于把存量脚本一键改造为 Page Object 风格。
revert-objects:反向还原
sbase revert-objects [SB_FILE.py] [OPTIONS]
选项:-c / --comments(保留每行已有注释)。
撤销 objectify 或 inject-objects 的改动,把对象变量名换回 page_objects.py 中存储的原始选择器,方便回退或对照审查。
安全工具:encrypt / obfuscate 与 decrypt / unobfuscate
sbase encrypt / sbase obfuscate
sbase decrypt / sbase unobfuscate
encrypt/obfuscate 运行密码加密/混淆工具(交互式输入密码);decrypt/unobfuscate 运行对应的解密/反混淆工具(输入加密后的密码文本)。两者互为逆操作,源码分别在 seleniumbase/common/obfuscate.py 与 seleniumbase/common/unobfuscate.py。典型用途是把测试代码中的敏感口令做混淆存储、运行前解密,避免明文写死在仓库里。
网络与分布式测试:proxy、download server、grid-hub、grid-node
sbase proxy:快速代理服务器
sbase proxy [OPTIONS]
选项:
--hostname=HOSTNAME (Set `hostname`) (Default: `127.0.0.1`)
--port=PORT (Set `port`) (Default: `8899`)
--help / -h (Display available `proxy` options.)
输出:在本机启动一个基础代理服务器,默认地址 127.0.0.1:8899。从 run.py 源码可见其实现方式:确保环境已安装 proxy.py 库(版本约束定义于 seleniumbase/fixtures/constants.py 的 ProxyPy.VER),然后以 proxy <参数> 子进程方式启动。
sbase download server:获取 Grid 服务端
sbase download server
下载 Selenium Server(Grid)JAR 文件——自建 Selenium Grid 时的必需件(实现见 seleniumbase/utilities/selenium_grid/download_selenium_server.py,force_download=True)。
sbase grid-hub:Grid 中心
sbase grid-hub [start|stop|restart] [OPTIONS]
选项:
-v / --verbose (Increases verbosity of logging output.)
--timeout=TIMEOUT (Close idle browser windows after TIMEOUT seconds.)
Hub 是 Selenium Grid 的调度中心,允许把测试分发到多台机器并行执行,从而缩短整套用例的耗时。默认闲置超时 230 秒(源码 show_grid_hub_usage() 中注明,run.py),--timeout=0 可关闭超时。可执行 start/restart/stop,实现见 seleniumbase/utilities/selenium_grid/grid_hub.py。
sbase grid-node:Grid 工作节点
sbase grid-node [start|stop|restart] [OPTIONS]
选项:
--hub=HUB_IP (Grid Hub IP Address. Default: `127.0.0.1`)
-v / --verbose (Increases verbosity of logging output.)
Node 是 Grid 的工作机器,向 Hub 注册并承接测试执行。示例:sbase grid-node start --hub=127.0.0.1。实现见 seleniumbase/utilities/selenium_grid/grid_node.py。完整的 Grid 自建流程与运维脚本(如 register-grid-node.sh、start-grid-hub.sh)都在 seleniumbase/utilities/selenium_grid 目录下。
从源码理解命令分发架构
所有命令最终都汇入 seleniumbase/console_scripts/run.py 的 main() 函数(run.py)。其分发模式清晰且一致:
- 命令名归一化:
command = command.lower(),因此SBASE、Sbase等写法同样有效; - 别名机制:
get == install、gui == commander、gui-behave == behave-gui、mkrec == codegen、record(带参)== mkrec、encrypt == obfuscate、decrypt == unobfuscate、caseplans == case-plans == case_plans、extract-objects == extract_objects等; - 参数缺失兜底:命令缺少必要参数(如
mkdir无目录名)时,自动打印该命令的专属帮助页而不是静默失败; - 帮助路由:
sbase help [COMMAND]走 run.py 的二级路由,逐命令输出帮助;sbase help(无子命令)输出全部命令的详细帮助; - 错误提示:未知命令会高亮显示
INVALID COMMAND: >> xxx <<后回到基础用法页。
各命令脚本(sb_install.py、sb_mkdir.py、sb_mkfile.py、sb_mkrec.py、sb_recorder.py、sb_commander.py、sb_behave_gui.py、sb_caseplans.py、sb_mkpres.py、sb_mkchart.py、sb_objectify.py、sb_print.py)与 run.py 同处 seleniumbase/console_scripts 目录,如需二次开发自定义命令,参照其中任一模块的结构即可快速接入。
小结
seleniumbase / sbase 命令集覆盖了浏览器自动化测试从环境准备(get/install)到工程搭建(mkdir/mkfile)、用例生成(mkrec/recorder)、代码重构(objectify 系列、translate、convert)、测试执行管理(commander/gui/behave-gui/caseplans)以及基础设施(proxy、Selenium Grid 三件套)的完整链路。熟练使用这套命令,配合 pytest 运行测试(选项速查 sbase options),即可把 SeleniumBase 的日常开发效率提升到新的层次。需要更细粒度说明时,随时可用 sbase help [COMMAND] 在本地查阅。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



