Docker環境下跑WebUI腳本文件上傳問題

問題背景:在Linux服務器Docker環境下跑WebUI腳本
在Linux服務器Docker環境下跑WebUI腳本,發現在Web頁面測試附件上傳問題總是找不到文件,同樣的腳本在本地Windows環境下跑腳本是可以成功的,問題找不到思路和方案,後來一步步排查才知道問題的根源卡在哪裏了,請看下圖

腳本報錯:
在這裏插入圖片描述
理清了下思路,在宿主機上跑UI自動化腳本是瀏覽器容器在跑,所以在跑附件上傳時候是在容器裏面來找路徑,而不是宿主機裏面,所以問題就卡在這裏:
在這裏插入圖片描述
解決思路:
方案一:Jenkins持續集成創建job拉取代碼後,將想要做文件上傳的目錄直接copy到指定的瀏覽器docker容器裏面的某個路徑下,然後將代碼裏面文件上傳的upload()方法的路徑指明docker的路徑即可。
方案二:每次構建的時候,我寫個shell腳本,然後來創建容器,做路徑映射,然後每次保證用你這個新啓動的瀏覽器

我們以方案一爲例子:

1.用存在的鏡像madehao/selenium-node-chrome:latest來創建容器,並命名容器的NAMES爲chrome74_jiawenheng

查看鏡像:docker images
在這裏插入圖片描述
查看seleniumHub
在這裏插入圖片描述
創建容器,並將容器新命名爲chrome74_jiawenheng,爲了方便和別人區分
docker run -d -p 5946:5900 --name chrome74_jiawenheng --link selehub_new:hub --shm-size=512m madehao/selenium-node-chrome:latest

查看運行的容器:docker ps -a
在這裏插入圖片描述
2.進入到chrome74_jiawenheng容器裏面,創建指定的目錄
docker exec -it 容器ID /bin/bash
創建一個文件夾
cd opt/
sudo mkdir autotest
pwd
/opt/autotest
在這裏插入圖片描述
3.進入到Jenkins裏面,在Build構建的時候寫shell命令,即將宿主機download文件目錄copy到指定的chrome74_jiawenheng容器/opt/autotest文件下,shell命令如下:
#!/bin/bash
docker cp src/test/resources/download/ chrome74_jiawenheng:/opt/autotest
在這裏插入圖片描述
4.修改java涉及路徑的代碼
如果是linux要定義docker容器的路徑即:
String filePath = null;
filePath = “/opt/autotest/download/”+ fileName;
然後selenium腳本用這個filePath路徑
在這裏插入圖片描述

5.修改testng.xml版本號

這個版本號是指的selehub_new:hub是唯一的,因爲第1步驟裏面在selehub_new:hub掛載這個命名爲chrome74_jiawenheng瀏覽器的版本號就是74.0.3729.108,要寫shell腳本向這個NAMES命名爲chrome74_jiawenheng的Chrome容器裏面copy要上傳附件的路徑;
在這裏插入圖片描述
具體版本號通過http://remoteIP:4444/grid/console來查看(remoteIP指的是宿主機IP)
在這裏插入圖片描述

6.然後通過IDEA提交代碼,合併代碼,觸發Jenkins的Job後查看日誌的報告;
job狀態運行完畢
在這裏插入圖片描述
構建日誌,查看文件上傳OK
在這裏插入圖片描述
查看測試報告,成功
在這裏插入圖片描述
進入到docker容器NAMES爲chrome74_jiawenheng裏面查看文件copy過來了沒有
至此結束!
在這裏插入圖片描述

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