基於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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章