在k8s中将Selenium Code连接到Selenium Hub

时间:2018-01-24 06:10:48

标签: selenium docker kubernetes browser-automation

我想通过selenium hub和chrome节点容器在kubernetes上运行我的自动化测试脚本。 我的测试脚本也是一个容器的形式,并作为pod运行。 我的测试脚本使用localhost:4444连接到网格。 但网格的NodePort为31376,并且每次创建新的selenium网格服务时它都会不断变化。

有什么方法可以为我的selenium hub保留一个常量NodePort,以便我的脚本可以运行。

硒中心服务:

apiVersion: v1
kind: Service
metadata:
  name: selenium-hub
  labels:
    app: selenium-hub
spec:
  ports:
  - port: 4444
    targetPort: 4444 
    name: port0
  selector:
    app: selenium-hub
  type: NodePort
  sessionAffinity: None

每次执行命令时,我都不想更改指向selenium hub的链接。

这是我的服务说明: -

C:\KUBE>kubectl describe service selenium-hub
Name:                     selenium-hub
Namespace:                default
Labels:                   app=selenium-hub
Annotations:              <none>
Selector:                 app=selenium-hub
Type:                     NodePort
IP:                       10.106.49.182
Port:                     port0  4444/TCP
TargetPort:               4444/TCP
NodePort:                 port0  31376/TCP
Endpoints:
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

感谢。

1 个答案:

答案 0 :(得分:0)

根据the documentation on NodePort services

  

如果需要特定的端口号,可以在nodePort字段中指定一个值,系统将为您分配该端口,否则API事务将失败(即您需要自己处理可能的端口冲突)。您指定的值必须在节点端口的配置范围内。

Here is an example,在您的情况下看起来像

apiVersion: v1
kind: Service
metadata:
  name: selenium-hub
  labels:
    app: selenium-hub
spec:
  ports:
  - port: 4444
    targetPort: 4444 
    name: port0
    nodeport: <your-desired-port>
  selector:
    app: selenium-hub
  type: NodePort
  sessionAffinity: None