在Openshift中配置Selenium-Grid

30 8月

通过Selenium-Grid我们可以使用一个更灵活的环境,同时还能得到在不同机器的不同浏览器上执行测试的功能。

Selenium-Grid由一个中心(Hub)和一到多个节点(Node)组成。两者都是通过 selenium-server.jar 启动。如果是手动安装需要先启动Hub,然后再启动Node,Node会通过启动时的配置连接注册到Hub中。

Docker明显是一个更好的选择,使用这个docker-compose就可以快速启动一个拥有两个节点的Grid。

hub:
  image: selenium/hub
  ports:
    - "4444:4444"
firefox:
  image: selenium/node-firefox
  links:
    - hub
chrome:
  image: selenium/node-chrome
  links:
    - hub

Docker自然是方便,但是因为有Openshift,所以更希望直接在Openshift上启动一个Grid。这里就需要额外的yaml文件来办了。

从Github上找到两个可以用的,这是Hub

apiVersion: v1
kind: Template
metadata:
  name: selenium-hub
  annotations:
    description: "A Selenium Grid"
    iconClass: "icon-selenium"
    tags: "selenium,hub"
objects:
- apiVersion: v1
  kind: Service
  metadata:
    name: selenium-hub
  spec:
    selector:
      type: hub
    type: ClusterIP
    ports:
    - name: web
      port: 4444
      targetPort: 4444
      protocol: TCP
    - name: node
此处省略,太长

如果需要一个chrome的node也是差不多的

apiVersion: v1
kind: Template
metadata:
  name: selenium-node-chrome
  annotations:
    description: "Selenium Node with Google Chrome browser"
    iconClass: "icon-selenium"
    tags: "selenium,node,chrome"
objects:
- apiVersion: v1
  kind: ReplicationController
  metadata:
    name: selenium-node-chrome
  spec:
    replicas: 1
    selector:
      browser: chrome
    template:
      metadata:
        name: selenium-node-chrome-master
        labels:
          browser: chrome
      spec:
        containers:
        - env:
...

如果网上不方便找到合适的模板而且自己也不熟悉具体的写法,那么还可以考虑使用Kompose工具。

Kompose可以将docker-compose文件转化为openshift可以识别的yaml文件。以本文上述提供的docker-compose文件为例,使用Kompose转化以后会生成6个文件,三个service.yaml,三个deployment.yaml。使用的时候全部使用就行了。以下是hub的两个定义,贴出来给大家一个简单的例子。

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.1.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: hub
  name: hub
spec:
  ports:
  - name: "4444"
    port: 4444
    targetPort: 4444
  selector:
    io.kompose.service: hub
status:
  loadBalancer: {}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.1.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: hub
  name: hub
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: hub
    spec:
      containers:
      - image: selenium/hub
        name: hub
        ports:
        - containerPort: 4444
        resources: {}
      restartPolicy: Always
status: {}

 

发表评论

电子邮件地址不会被公开。