基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建(3)——基于k8s的selenium grid集群搭建

本篇主要讲解如何使用k8s搭建selenium grid集群

Selenium Grid集群部署

1、  首先我们将通过 Kubernetes 服务进行通信以到达hub和nodes。Kubernetes Service 在hub和nodes之间进行双向通信。如下图所示:

 

2、  建议使用vsc编写Selenium grid的YAML配置文件,并且安装YAML、Kubernetes和Docker插件,新建文件名为deploy.yml的配置文件,用于k8s部署Selenium Hub容器,Yaml具体内容如下:。

 apiVersion: apps/v1

 kind: Deployment

 metadata:

   name: selenium-hub        #hub名称

 spec:

   selector:

     matchLabels:

       app: selenium-hub

   strategy:

         type: RollingUpdate        #滚动部署

         rollingUpdate:

          maxSurge: 1

          maxUnavailable: 0

       template:

         metadata:

           labels:

             app: selenium-hub

         spec:

          containers:

           - name: selenium-hub

           image: selenium/hub:3.141.59-20200515     #hub镜像,其他版本可以访问:https://hub.docker.com/r/selenium/hub/tags.获取

             resources:

               limits:

                 memory: "1000Mi"

                 cpu: "500m"

             ports:

               - containerPort: 4444

             livenessProbe:

                 httpGet:

                   path: /wd/hub/status

                   port: 4444

                 initialDelaySeconds: 30

                 timeoutSeconds: 5

3、  新建文件名为service.yml的配置文件,用于k8s部署Kubernetes service容器,具体参数如下:

 apiVersion: v1

 kind: Service

 metadata:

    name: selenium-srv   #k8s服务名称

 spec:

   selector:

     app: selenium-hub

   ports:

   - port: 4444

         nodePort: 30001     #node端口

       type: NodePort

       sessionAffinity: None

4、新建文件名为service.yml的配置文件,用于k8s部署selenium/node-chrome容器,具体参数如下:

 apiVersion: v1

 kind: ReplicationController

 metadata:

   name: selenium-node-firefox-rep

 spec:  

   replicas: 3           #复制节点个数,可根据需求调整

   selector:

     app: selenium-node-firefox

   template:

         metadata:

           name: selenium-node-firefox

           labels:

             app: selenium-node-firefox

         spec:

           containers:

             - name: selenium-node-firefox

               image: selenium/node-firefox      #所用镜像,可访问:https://github.com/SeleniumHQ/docker-selenium获取所需镜像

               ports:

                 - containerPort: 5901

               env:

                - name:  HUB_HOST

                  value: "selenium-srv" 

                - name: HUB_PORT

                  value: "4444"

5、  新建文件名为service.yml的配置文件,用于k8s部署selenium/ node-firefox容器,具体参数如下:

 apiVersion: v1

 kind: ReplicationController

 metadata:

   name: selenium-node-chrome-rep

 spec:  

   replicas: 3

   selector:

     app: selenium-node-chrome

   template:

         metadata:

           name: selenium-node-chrome

           labels:

             app: selenium-node-chrome

         spec:

           containers:

             - name: selenium-node-chrome

               image: selenium/node-chrome

               ports:

                 - containerPort: 5900

               env:

                - name:  HUB_HOST

                  value: "selenium-srv" 

                - name: HUB_PORT

                  value: "4444"

执行部署操作

创建hub部署命令:

kubectl create -f deploy.yml

创建完成后查看详细信息命令:

kubectl describe deploy

相关命令结果如下图所示:

 

打开docker desktop切换到Containers/Apps界面可以看到新部署的selenium hub容器,如下图所示:

 

根据以上方法分别对其他容器进行部署,命令如下

Kubernetes service:

kubectl create -f service.yml
kubectl describe service

selenium/node-chrome:

kubectl create -f repchrome.yml

selenium/ node-firefox:

kubectl create -f repff.yml

K8s集群设置完成后可以通过以下命令获取所有创建的pod:

kubectl get pods

当所有pod的ready均为1/1时,启动成功,如下图所示:

 

使用浏览器访问:http://127.0.0.1:30001/grid/console,可以看到已部署成功的selenium grid集群,如下图所示:

 

最终在自动化测试代码的@Before下的函数中添加如下代码即可

URL hubUrl=new URL("http://172.30.17.109:30001/wd/hub");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();//new DesiredCapabilities();
capabilities.setBrowserName("chrom");
capabilities.setPlatform(Platform.LINUX);
driver = new RemoteWebDriver(hubUrl,capabilities);

运行测试用例时,selenium hub会自动分配到配置有chrome的node下执行。

以上是基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建全部流程,亲测可用,如有问题请留言!

参考已下资源:

https://www.swtestacademy.com/selenium-kubernetes-scalable-parallel-tests/(基于mac环境)

https://www.kubernetes.org.cn/k8s(k8s中文社区)

https://blog.csdn.net/ai524719755/article/details/116712692(win10安装k8s)

 

posted @ 2021-08-03 22:08  一点空白  阅读(1543)  评论(0编辑  收藏  举报