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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM