You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python连接Docker Selenium/Hub?VNC与远程驱动连接疑问

使用Selenium Hub实现多浏览器并发:连接、VNC访问及监控指南

我来帮你梳理下Selenium Hub的配置、连接和监控方法,刚好我之前也做过类似的部署,一步步来:

1. 调整Docker Compose配置(Hub + 浏览器节点)

首先需要把原来的单standalone容器改成Hub + 多节点的架构,Hub负责管理所有浏览器节点的会话分配。这里给你配置一个带Firefox和可选Chrome节点的示例:

services:
  django: &django
    links:
      - selenium-hub  # Django容器现在连接Hub而不是单个浏览器容器
  selenium-hub:
    image: selenium/hub
    ports:
      - "4444:4444"  # Hub的核心端口,用于RemoteDriver连接
      - "4442:4442"  # 事件总线发布端口(节点和Hub通信用)
      - "4443:4443"  # 事件总线订阅端口
  firefox-node:
    image: selenium/node-firefox-debug
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_NODE_MAX_SESSIONS=5  # 每个Firefox节点允许的最大并发会话数,按需调整
    ports:
      - "5900:5900"  # 映射到宿主机的VNC端口
  # 可选:添加Chrome节点(如果需要同时跑Chrome)
  chrome-node:
    image: selenium/node-chrome-debug
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_NODE_MAX_SESSIONS=5
    ports:
      - "5901:5900"  # 用不同的宿主机端口避免冲突

2. 连接RemoteDriver到Hub

现在不需要直接指定单个浏览器容器了,所有请求都发给Hub,Hub会自动把会话分配给空闲的浏览器节点。代码调整很简单:

Firefox连接示例

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# 连接Selenium Hub,会自动分配可用的Firefox节点
browser = webdriver.Remote(
    command_executor='http://selenium-hub:4444/wd/hub',  # 用Hub的服务名(Docker内部网络)
    desired_capabilities=DesiredCapabilities.FIREFOX
)

Chrome连接示例(如果配置了Chrome节点)

browser = webdriver.Remote(
    command_executor='http://selenium-hub:4444/wd/hub',
    desired_capabilities=DesiredCapabilities.CHROME
)

3. 通过VNC访问运行中的浏览器

每个-debug镜像都自带VNC服务,默认密码是secret。你需要根据节点的端口映射来连接:

  • Firefox节点:用VNC客户端连接localhost:5900
  • Chrome节点:用VNC客户端连接localhost:5901
    如果添加更多节点,记得给每个节点映射不同的宿主机端口(比如5902、5903),避免端口冲突。

4. 监控运行中的浏览器和会话

Selenium Hub自带了可视化控制台,非常方便监控:

  • 在宿主机浏览器访问http://localhost:4444/ui,可以看到:
    • 所有浏览器节点的在线状态、可用会话数
    • 当前正在运行的所有会话详情
    • 每个会话的日志、甚至可以直接查看浏览器实时画面(部分版本支持)

另外,你也可以用Hub的REST API做自动化监控:

  • 获取Hub和节点状态:http://localhost:4444/wd/hub/status
  • 获取所有活跃会话:http://localhost:4444/wd/hub/sessions

小提示

  • 每个节点的SE_NODE_MAX_SESSIONS不要设置太大,要根据宿主机的CPU、内存资源来调整,避免卡顿
  • 如果需要更多并发会话,可以复制多个相同的节点配置(比如firefox-node-2、firefox-node-3),只要映射不同的VNC端口就行

内容的提问来源于stack exchange,提问作者Arti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:34:21