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

如何获取Selenium Grid节点ID与Docker noVNC端口的映射关系

解决Selenium节点ID与noVNC端口映射的关联问题

以下是几种实用方法,帮你精准匹配节点ID对应的宿主机noVNC端口:

方法一:通过Docker命令行关联节点IP与端口

Selenium Grid /status 接口返回的节点ID包含容器内部IP(比如http://172.18.0.3:5555),你可以通过Docker命令把这个内部IP和宿主机的790x端口对应起来:

  1. 执行以下命令,列出所有Edge节点的内部IP和对应的宿主机noVNC端口:
for container in $(docker-compose ps -q edge); do
  node_ip=$(docker inspect -f '{{.NetworkSettings.IPAddress}}' $container)
  novnc_port=$(docker inspect -f '{{(index .NetworkSettings.Ports "7900/tcp" 0).HostPort}}' $container)
  echo "节点内部IP: $node_ip → 宿主机noVNC端口: $novnc_port"
done
  1. 从 /status 接口中找到目标会话对应的节点ID,提取内部IP,和上面输出的结果匹配,就能直接得到对应的790x端口。

如果你想快速查看所有Edge节点的端口映射,也可以直接运行:

docker-compose ps edge

输出会显示每个容器的端口映射关系,比如:

Name                     Command               State                        Ports
---------------------------------------------------------------------------------------------------------
selenium-edge-1        /opt/bin/entry_point.sh        Up      5555/tcp, 0.0.0.0:7901->7900/tcp
selenium-edge-2        /opt/bin/entry_point.sh        Up      5555/tcp, 0.0.0.0:7902->7900/tcp
selenium-edge-3        /opt/bin/entry_point.sh        Up      5555/tcp, 0.0.0.0:7903->7900/tcp

再通过容器名查询内部IP,关联到节点ID即可:

docker inspect -f '{{.NetworkSettings.IPAddress}}' selenium-edge-1

方法二:固定节点端口(适合固定数量的节点)

如果不需要动态缩放节点,或者可以提前规划端口,修改Docker Compose配置,给每个节点单独分配固定端口,这样节点ID和端口的对应关系一目了然:

version: "3"
services:
  edge1:
    image: selenium/node-edge:latest
    shm_size: 2gb
    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_INSTANCES=1
      - SE_NODE_MAX_SESSIONS=1
      - SE_VNC_NO_PASSWORD=1
      - SE_NODE_SESSION_TIMEOUT=60
    ports:
      - "7901:7900"
  edge2:
    image: selenium/node-edge:latest
    shm_size: 2gb
    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_INSTANCES=1
      - SE_NODE_MAX_SESSIONS=1
      - SE_VNC_NO_PASSWORD=1
      - SE_NODE_SESSION_TIMEOUT=60
    ports:
      - "7902:7900"
  edge3:
    image: selenium/node-edge:latest
    shm_size: 2gb
    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_INSTANCES=1
      - SE_NODE_MAX_SESSIONS=1
      - SE_VNC_NO_PASSWORD=1
      - SE_NODE_SESSION_TIMEOUT=60
    ports:
      - "7903:7900"
  selenium-hub:
    image: selenium/hub:latest
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

启动后,每个节点的容器名对应edge1/edge2/edge3,直接对应7901/7902/7903端口,无需额外查询。

方法三:尝试通过会话详情接口获取信息

部分Selenium Grid版本支持通过会话详情接口获取节点更多信息,调用:

GET http://localhost:4444/wd/hub/session/<会话ID>

查看返回的capabilities或node字段,可能包含节点的端口相关信息,但该方法兼容性依赖Grid版本,不如前两种方法可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:26:01