# Docker+seleniumgrid+jenkins **Repository Path**: agentni/seleniumgrid ## Basic Information - **Project Name**: Docker+seleniumgrid+jenkins - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Selenium Grid 4 集群 — Docker 一键搭建 > 🎯 学习用途:单个 `docker-compose.yml` 启动 Hub + Chrome + Firefox + Edge 四个容器,Python 多线程并行执行,自动分配 session 到不同浏览器节点。 --- ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────┐ │ Docker Desktop (Linux VM) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Chrome │ │ Firefox │ │ Edge │ │ │ │ Node │ │ Node │ │ Node │ │ │ │ :7901 │ │ :7902 │ │ :7903 │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ └──────────────┼──────────────┘ │ │ │ SE_EVENT_BUS_HOST=hub │ │ ┌──────┴──────┐ │ │ │ Hub │ │ │ │ :4444 │ │ │ └──────┬──────┘ │ └──────────────────────┼───────────────────────────┘ │ ┌───────┴───────┐ │ Python 测试 │ │ localhost:4444 │ └───────────────┘ ``` --- ## 🚀 快速开始 ### 前置条件 | 软件 | 版本要求 | 说明 | |------|----------|------| | Docker Desktop | 最新版 | 启用 WSL 2 Based Engine | | Python | 3.10+ | 运行测试代码 | | pip | 最新版 | 安装依赖 | ### 1. 安装依赖 ```powershell pip install -r requirements.txt ``` ### 2. 启动 Grid 集群 ```powershell # 在项目根目录执行 docker-compose up -d ``` 等待容器全部启动后,访问确认: | 地址 | 用途 | |------|------| | http://localhost:4444/ui | Grid 控制台(查看节点和 session) | | http://localhost:4444/status | Grid API 状态 | | http://localhost:7901 | VNC — Chrome 节点实时画面 | | http://localhost:7902 | VNC — Firefox 节点实时画面 | | http://localhost:7903 | VNC — Edge 节点实时画面 | > VNC 免密,直接在浏览器打开即可。 ### 3. 运行测试 ```powershell # 方式一:单浏览器模式(指定 --browser) pytest tests/test_baidu.py --browser=chrome -v -s # 方式二:多线程并发(3 个浏览器同时执行) pytest tests/test_baidu.py -v -s ``` ### 4. 停止集群 ```powershell docker-compose down ``` --- ## 📁 项目结构 ``` selenium/ ├── docker-compose.yml # 全栈定义(Hub + 3 Node) ├── .gitignore ├── README.md ├── scripts/ # 自动化脚本目录 │ ├── start-grid.ps1 # 启动 Grid 脚本 │ └── stop-grid.ps1 # 停止 Grid 脚本 ├── tests/ # 测试代码目录 │ ├── __init__.py │ ├── helpers.py # 共享工具函数 │ ├── conftest.py # pytest fixture 配置 │ ├── test_baidu.py # 百度测试用例 │ └── requirements.txt # Python 依赖 ├── pages/ # 页面对象模型 │ ├── __init__.py │ ├── base_page.py # 基础页面类 │ └── web_page.py # 网页页面类 ├── testcase/ # 测试用例集 │ ├── __init__.py │ ├── test_1.py # 测试用例 1 │ ├── test_2.py # 测试用例 2 │ ├── test_3.py # 测试用例 3 │ └── ... # 更多测试用例 └── screenshots/ # 测试截图输出(自动创建) ``` --- ## 🔍 验证并行执行 1. 打开 Grid UI:http://localhost:4444/ui 2. 运行 `pytest tests/test_baidu.py -v -s` 3. 在 Grid UI 的 **Sessions** 选项卡中可以看到 3 个 session 分别分配给 Chrome、Firefox、Edge 节点 4. 打开 3 个浏览器标签页分别访问 VNC(7901/7902/7903),可以看到每个浏览器实时打开百度 --- ## ⚙️ 配置说明 | 环境变量 | 默认值 | 说明 | |----------|--------|------| | `SE_EVENT_BUS_HOST` | `hub` | 节点注册到 Hub 的地址(Docker 内部 DNS) | | `SE_NODE_MAX_SESSIONS` | `1` | 每节点最大并发 session 数 | | `SE_VNC_NO_PASSWORD` | `1` | VNC 免密(仅学习环境) | | `SE_SESSION_REQUEST_TIMEOUT` | `300` | Hub 等待 session 超时(秒) | --- ## ❓ 常见问题 ### Q: 节点没有显示在 Grid UI? - 节点依赖 `hub` 的健康检查,首次启动需等待约 30 秒 - 运行 `docker-compose logs hub` 查看 Hub 日志 - 运行 `docker-compose logs chrome` 查看节点日志 ### Q: Chrome 节点启动失败? - Chrome 需要较大共享内存,`docker-compose.yml` 已配置 `shm_size: 2gb` - 确保 Docker Desktop 分配了足够内存(建议 ≥ 4GB) ### Q: 测试报连接超时? - 确认 Hub 已启动:`docker ps | grep selenium-hub` - 访问 http://localhost:4444/status 确认 Grid 在线 - 检查防火墙是否阻止了 4444 端口 ### Q: 如何只用 1 个或 2 个浏览器? - 按需修改 `docker-compose.yml`,注释掉不需要的节点 - 或使用 `docker-compose up -d hub chrome` 只启动指定服务 ### Q: 如何调整 VNC 端口? - 修改 `docker-compose.yml` 中各节点的 `ports` 映射即可 --- ## 📚 参考资料 - [Selenium Grid 4 官方文档](https://www.selenium.dev/documentation/grid/) - [Selenium Docker 镜像](https://github.com/SeleniumHQ/docker-selenium) - [Grid 配置参数](https://www.selenium.dev/documentation/grid/configuration/) --- ## 📄 许可证 本项目仅供学习交流使用,请遵守 Selenium 官方许可证条款。