
selenium
用代码操控真实浏览器,自动点击填表跑测试
Selenium 是一套浏览器自动化框架与生态,核心是 WebDriver 协议,让代码能像真人一样打开网页、点击、输入、读取页面内容,从而把重复的浏览器操作交给程序完成。它解决的是跨浏览器、跨语言自动化测试与网页操作的问题:同一套思路可驱动 Chrome、Firefox、Edge、Safari 等主流浏览器,并同时提供 Java、Python、JavaScript、Ruby、C#、Rust 等多语言绑定,方便团队沿用既有技术栈。除测试外,它也被广泛用于网页数据采集、表单批量填写、后台流程自动化、截图与监控等场景。项目包含 WebDriver、Grid 分布式执行、IDE 录制等组件,支持并行跑用例和远程节点调度,是自动化测试领域事实上的标准之一,社区庞大、资料丰富,遇到问题容易找到答案。
项目数据
使用教程
环境要求
- Windows 系统(README 的自动/手动安装流程均面向 Windows)
- 以管理员身份运行的 PowerShell
- MSYS2 与已安装"Desktop development with C++"工作负载的 Visual Studio Community
- 已安装 Python 与 pip(用于 Python 绑定的本地安装)
- 已安装 Docker(如需构建开发镜像)
安装与启动步骤
-
1克隆项目代码
把 Selenium 仓库克隆到你想放置的父目录,后续所有 ./go 命令都要在仓库根目录执行。
git clone https://github.com/SeleniumHQ/selenium.git -
2一键装开发环境
管理员 PowerShell 先放开脚本执行策略,再运行官方脚本自动补齐开发环境,已存在的组件不会重复安装。
Set-ExecutionPolicy Bypass -Scope Process -Force .scriptsdev-environment-setup.ps1 -
3手动模式:放开权限
若不用自动脚本,先允许 Selenium 内脚本运行,并写入注册表开启 Windows 开发者模式。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" -
4配置编译依赖
装 MSYS2 并把其 bin 加入 PATH、bash.exe 路径写入 BAZEL_SH;装 Visual Studio 后设置 BAZEL_VC 与 BAZEL_VC_FULL_VERSION。
-
5开启长路径支持
Bazel 目录层级很深,需改注册表启用长路径、允许短文件名,并把 Bazel 输出根改到 C:/tmp 避免超限。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor" /t REG_DWORD /f /v "DisableUNCCheck" /d "1" reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem" /t REG_DWORD /f /v "LongPathsEnabled" /d "1" fsutil 8dot3name set 0 -
6构建开发镜像
可选:用 dev image 目录下的 Dockerfile 构建一个适合构建和测试 Selenium 的镜像,需在仓库根目录执行。
docker build -f scripts/dev-image/Dockerfile -t selenium-dev . -
7装 Java 到本地
Selenium 不用 Maven 构建,但可用 go 脚本把各模块部署到本地 Maven 仓库 ~/.m2/repository 供本地使用。
./go java:install -
8本地安装 Python 包
先装 Python 依赖,再生成文件到源码树以便直接从 py 目录导入;也可构建 wheel 安装到 site-packages。
pip install -r py/requirements_lock.txt ./go py:local_dev
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
PATH | 是 | 加入 MSYS2 的 bin 目录,供 Bazel 调用 Unix 风格命令 | C: oolsmsys64usrin |
BAZEL_SH | 是 | 指向 MSYS2 的 bash.exe 路径 | C: oolsmsys64usrinash.exe |
BAZEL_VC | 是 | Visual C++ 构建工具安装目录 | C:Program FilesMicrosoft Visual Studio2CommunityVC |
BAZEL_VC_FULL_VERSION | 是 | MSVC 版本号,取自 $BAZEL_VCToolsMSVC 下的目录名 | 14.40.33807 |
selenium/.bazelrc.windows.local | 否 | 把 Bazel 输出根指到 C:/tmp,避免 Windows 路径过长 | startup --output_user_root=C:/tmp |
如何确认成功
在仓库根的 py 目录下执行 python -c "import selenium" 能成功导入,且 ./go 相关命令无报错退出,即表示本地开发环境可用。
常见问题
Q:我只想用 Selenium 写自动化脚本,要按这份 README 编译源码吗?
A:不需要。README 明确是给想贡献代码的开发者看的,普通使用者请查阅官方 User Manual(selenium.dev/documentation)获取安装与用法示例。
Q:Windows 上执行脚本提示策略禁止运行怎么办?
A:以管理员身份打开 PowerShell,先执行 Set-ExecutionPolicy Bypass -Scope Process -Force(自动安装)或 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned(手动安装)再运行脚本。
Q:Bazel 报路径过长或文件名相关错误?
A:启用 LongPathsEnabled 与 DisableUNCCheck 两个注册表项,执行 fsutil 8dot3name set 0,并在 selenium/.bazelrc.windows.local 中写入 startup --output_user_root=C:/tmp。
Q:./go py:install 因权限失败怎么办?
A:该命令会尝试装到全局 Python 的 site-packages,可能不可写。README 建议先创建并激活虚拟环境,然后再安装。
Q:遇到问题去哪里求助?
A:README 给出官方支持渠道 https://www.selenium.dev/support/,可在此查询获取帮助的方式。
注意事项
- 本 README 面向贡献者,非普通用户的上手文档,使用场景请以官方 User Manual 为准。
- 自动安装脚本不会覆盖已存在的环境,遇到提示时按需选择。
- 所有 ./go 命令必须在克隆下来的 selenium 仓库根目录执行。
- 手动安装需要逐个设置 BAZEL_SH、BAZEL_VC、BAZEL_VC_FULL_VERSION 等环境变量,缺一不可。
核心亮点
- 跨浏览器与跨语言支持成熟,Java/Python/JS/Ruby/C#/Rust 均可使用
- WebDriver 已成行业标准,生态与第三方库、云测平台兼容性极好
- 配套 Grid 支持分布式并行执行,适合大规模测试与远程节点调度
不足之处
- API 偏底层,元素定位与等待需手写,脚本稳定性依赖开发者经验
- 默认启动真实浏览器,资源占用与执行速度不如无头专用方案轻量
- 版本与驱动匹配问题较常见,环境配置对新手不够友好
适用场景
- Web 应用的端到端回归测试与多浏览器兼容性验证
- 批量网页数据采集与表单自动填写
- 结合 Grid 做分布式并行测试或定时页面监控截图
替代项目
Playwright、Puppeteer、Cypress
项目介绍
同类项目推荐
n8n
开源
拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。
Fair-code workflow automation platform with native AI capabilities. Combine visual b···
robotcode
开源
让 Robot Framework 拥有现代 IDE 体验,调试、补全、运行一气呵成。
Open Source Toolkit for Robot Framework, providing Language Server Protocol support,···
puppeteer
开源
用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。
JavaScript API for Chrome and Firefox
customermates
开源
比 Pipedrive 直观 10 倍的现代开源 CRM,轻松管理客户与自动化流程。
Building a modern alternative to Pipedrive that is 10x more intuitive.