首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium 4: Chrome节点没有正确注册到中心

Selenium 4: Chrome节点没有正确注册到中心
EN

Stack Overflow用户
提问于 2021-12-07 11:56:31
回答 3查看 2.2K关注 0票数 0

我有一个Openshift 3集群,包含以下两个容器: selenium-hub和selenium-node。请参阅下面附加的部署和服务yaml文件。

集线器部署:

代码语言:javascript
复制
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  labels:
    app: selenium-hub
    selenium-hub: master
  name: selenium-hub
spec:
  replicas: 1
  selector:
    type: selenium-hub
  template:
    metadata:
      labels:
        type: selenium-hub
      name: selenium-hub
    spec:
      containers:
        - image: 'selenium/hub:latest'
          imagePullPolicy: IfNotPresent
          name: master
          ports:
            - containerPort: 4444
              protocol: TCP
            - containerPort: 4442
              protocol: TCP
            - containerPort: 4443
              protocol: TCP
  triggers:
    - type: ConfigChange

中心服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    app: selenium-hub
    selenium-hub: master
  name: selenium-hub
spec:
  ports:
    - name: selenium-hub
      port: 4444
      protocol: TCP
      targetPort: 4444
    - name: publish
      port: 4442
      protocol: TCP
      targetPort: 4442
    - name: subscribe
      port: 4443
      protocol: TCP
      targetPort: 4443
  selector:
    type: selenium-hub
  type: ClusterIP

节点部署:

代码语言:javascript
复制
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  labels:
    app: selenium-node-chrome
  name: selenium-node-chrome
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    browser: chrome
  template:
    metadata:
      labels:
        app: node-chrome
        browser: chrome
      name: selenium-node-chrome-master
    spec:
      containers:
        - env:
            - name: SE_EVENT_BUS_HOST
              value: selenium-hub
            - name: SE_EVENT_BUS_PUBLISH_PORT
              value: '4442'
            - name: SE_EVENT_BUS_SUBSCRIBE_PORT
              value: '4443'
            - name: SE_NODE_HOST
              value: node-chrome
            - name: SE_NODE_PORT
              value: '5555'
          image: 'selenium/node-chrome:4.0.0-20211102'
          imagePullPolicy: IfNotPresent
          name: master
          ports:
            - containerPort: 5555
              protocol: TCP
  triggers:
    - type: ConfigChange

节点服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    app: selenium-node-chrome
  name: selenium-node-chrome
spec:
  ports:
    - name: node-port
      port: 5555
      protocol: TCP
      targetPort: 5555
    - name: node-port-grid
      port: 4444
      protocol: TCP
      targetPort: 4444
  selector:
    browser: chrome
  type: ClusterIP

我的问题:--集线器和节点--正在启动,但是节点一直在发送注册事件,而hub正在记录一些信息,我真的不太明白。请参阅下面所附的日志。

节点日志:

代码语言:javascript
复制
Setting up SE_NODE_GRID_URL...
Selenium Grid Node configuration: 
[events]
publish = "tcp://selenium-hub:4442"
subscribe = "tcp://selenium-hub:4443"

[server]
host = "node-chrome"
port = "5555"
[node]
session-timeout = "300"
override-max-sessions = false
detect-drivers = false
max-sessions = 1

[[node.driver-configuration]]
display-name = "chrome"
stereotype = '{"browserName": "chrome", "browserVersion": "95.0", "platformName": "Linux"}'
max-sessions = 1

Starting Selenium Grid Node...
11:34:31.635 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
11:34:31.643 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
11:34:31.774 INFO [UnboundZmqEventBus.<init>] - Connecting to tcp://selenium-hub:4442 and tcp://selenium-hub:4443
11:34:31.843 INFO [UnboundZmqEventBus.<init>] - Sockets created
11:34:32.854 INFO [UnboundZmqEventBus.<init>] - Event bus ready
11:34:33.018 INFO [NodeServer.createHandlers] - Reporting self as: http://node-chrome:5555 
11:34:33.044 INFO [NodeOptions.getSessionFactories] - Detected 1 available processors
11:34:33.115 INFO [NodeOptions.report] - Adding chrome for {"browserVersion": "95.0","browserName": "chrome","platformName": "Linux","se:vncEnabled": true} 1 times
11:34:33.130 INFO [Node.<init>] - Binding additional locator mechanisms: name, relative, id
11:34:33.471 INFO [NodeServer$1.start] - Starting registration process for node id 2832e819-cf31-4bd9-afcc-cd2b27578d58
11:34:33.473 INFO [NodeServer.execute] - Started Selenium node 4.0.0 (revision 3a21814679): http://node-chrome:5555 
11:34:33.476 INFO [NodeServer$1.lambda$start$1] - Sending registration event...
11:34:43.479 INFO [NodeServer$1.lambda$start$1] - Sending registration event...
11:34:53.481 INFO [NodeServer$1.lambda$start$1] - Sending registration event...

集线器日志:

代码语言:javascript
复制
2021-12-07 11:14:22,663 INFO spawned: 'selenium-grid-hub' with pid 11
2021-12-07 11:14:23,664 INFO success: selenium-grid-hub entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
11:14:23.953 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
11:14:23.961 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
11:14:24.136 INFO [BoundZmqEventBus.<init>] - XPUB binding to [binding to tcp://*:4442, advertising as tcp://XXXXXXX:4442], XSUB binding to [binding to tcp://*:4443, advertising as tcp://XXXXXX:4443]
11:14:24.246 INFO [UnboundZmqEventBus.<init>] - Connecting to tcp://XXXXXX:4442 and tcp://XXXXXXX:4443
11:14:24.275 INFO [UnboundZmqEventBus.<init>] - Sockets created
11:14:25.278 INFO [UnboundZmqEventBus.<init>] - Event bus ready
11:14:26.232 INFO [Hub.execute] - Started Selenium Hub 4.1.0 (revision 87802e897b): http://XXXXXXX:4444 
11:14:46.965 INFO [Node.<init>] - Binding additional locator mechanisms: name, relative, id
11:15:46.916 INFO [Node.<init>] - Binding additional locator mechanisms: relative, name, id
11:17:52.377 INFO [Node.<init>] - Binding additional locator mechanisms: relative, id, name

有人能告诉我为什么集线器不注册节点吗?如果你需要更多的信息,请告诉我。非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-30 17:08:29

所以,有点晚了,但我还是遇到了同样的问题-- docker-compose示例给出了selenium-hub作为主机,这在该场景中是正确的,因为它指向selenium-集线器服务定义的容器。然而,在库伯内特斯,舱间通信需要通过一个服务.服务有多种类型,但是为了从集群内部访问它,在本例中使用ClusterIP (文档在这里获取更多信息)是最简单的。

我的解决方法是为事件总线使用的两个端口提供一个服务:

  • 巴士-发行者(端口4442)
  • 巴士-预约服务(端口4443)

在清单yaml中,这看起来是:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    app-name: selenium
  name: bus-sub
  namespace: selenium
spec:
  ports:
  - port: 4443
    protocol: TCP
    targetPort: 4443
  selector:
    app: selenium-hub
  type: ClusterIP
票数 1
EN

Stack Overflow用户

发布于 2021-12-07 15:27:18

您没有公开集线器容器中的端口4443和4442 (请参阅spec.containers的端口部分)

票数 0
EN

Stack Overflow用户

发布于 2021-12-14 12:09:32

您在同一台机器上,所以我认为您不需要使用环境变量:节点部署中的SE_NODE_HOST只使用以下变量:

代码语言:javascript
复制
SE_EVENT_BUS_HOST=selenium-hub
SE_EVENT_BUS_PUBLISH_PORT=4442
SE_EVENT_BUS_SUBSCRIBE_PORT=4443

如果您认为您不在同一个VM中,则需要使用以下环境变量正确配置节点部署:

代码语言:javascript
复制
SE_EVENT_BUS_HOST=<ip-of-hub-machine>
SE_EVENT_BUS_PUBLISH_PORT=4442
SE_EVENT_BUS_SUBSCRIBE_PORT=4443
SE_NODE_HOST=<ip-of-node-machine>

请不要添加未使用的环境变量,例如:‘SE_NODE_PORT’,因为selenium映像不支持不同的环境变量,除了可以在Github‘docker’项目:https://github.com/SeleniumHQ/docker-selenium中阅读的环境变量之外。如果你那么想用你的变量。所以,创建您自己的selenium映像(我不建议这样),我用我对您说的话来代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70259711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档