您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在docker中利用selenium+testng實現web自動化,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Windows下selenium+testng的web自動化環境搭建
做過自動化的人,肯定對selenium web環境的搭建非常熟悉了,特別是selenium在java中的使用。
先搭建好安裝好JDK,配置好java開發環境(這個如果還是不知怎么操作的話可是要打PP了)。然后從官網下載對應selenium的jar包,加載到項目里;或者是使用maven,修改pom.xml文件直接加載selenium的依賴包即可:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.14.0</version> </dependency>
接著加上對應的瀏覽器驅動文件,就基本搞定環境了,可以開始自動化測試代碼之路了。
當然大家在編寫代碼的過程中也會用到現在流行的單元測試框架testng。如何在這基礎上增加testng環境?其實這也不是什么難事,在testng的官網(https://testng.org/doc/index.html)提供了Eclipse、IEDA等編輯器下如何安裝插件,比如Eclipse直接進入Market搜索testng安裝即可,使用maven則需要在pom.xml中添加依賴包:
<repositories> <repository> <id>jcenter</id> <name>bintray</name> <url>http://jcenter.bintray.com</url> </repository> </repositories> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.10</version> <scope>test</scope> </dependency>
無腦等待下載安裝完成,后續就是寫代碼了,然后就可以自由的揮灑了。
但是今天要介紹的不是上面這些,這種環境的搭建非常簡單,大多數人其實都會,坑也不多,只是個代碼環境而已。
我們這次要處理的麻煩事是什么呢?在現在日益發達的docker模式下,上述的編譯環境沒法在linux系統上跑了,沒了代碼編輯器、沒了界面、也沒了瀏覽器,那應該如何操作呢?讓我們來看一看。
Docker的安裝與使用
同樣的,還是需要java+selenium+testng,只不過環境從windows變成了linux。
關于docker的使用這里稍稍給大家介紹一下安裝、啟動過程:
直接使用yum install docker
命令安裝;
service docker start啟
動docker服務;
然后docker pull centos
搞定centos版本下最基本的docker鏡像;
通過docker images
命令可以列出當前所有鏡像;
查看到linux的鏡像后,使用docker run -it -d
鏡像名稱,讓linux的容器跑起來(注意-it -d
的參數,如果沒有容器一閃而過就掛起了);
進入容器可先通過docker ps查看當前所有運行的容器,如果查不到,說明容器并沒有啟動,或者已經關閉了,docker ps
會列出容器的id;
使用docker attach
容器id即可登錄到容器中的linux了。
Docker下java環境搭建
容器里的linux其實和普通的linux操作是一樣的了。
首先是安裝jdk:
下載 jdk-8u181-linux-x64.tar.gz 包;
tar -xzvf jdk-8u181-linux-x64.tar.gz
解壓,得到jdk1.8.0_181 目錄(假設存放為/root/java/ 目錄);
配置java的環境變量:
編輯環境變量文件:vi /etc/profile
加入內容:
export JAVA_HOME=/root/java/jdk1.8.0_181 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
刷新環境變量配置:
source /etc/profile
確認java版本是否生效:
java -version
到這里java環境算是解決了,也沒什么特別的難度,一步步來即可。
Docker下testng環境配置
接下來就是testng了,因為環境類似java而且也和環境變量有關系,所以優先解決:
下載 testng-6.14.3.jar 包;
tar -xzvf testng-6.14.3.jar
解壓得到testng目錄(假設放在 /root/java/testng/ 目錄下) ;
繼續編輯環境變量文件:
vi /etc/profile
加入內容:
export TESTNG_HOME=/root/java/testng export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar
刷新環境變量配置:
source /etc/profile
注意這里的testng環境變量,其中的 CLASSPATH 是在java環境的基礎上追加的,如果大家是在windows上配置,分隔符要換成 ; 且環境變量的互相調用形式不同,這是有一些區別的。
好了,可能有人會覺得,這不是很簡單嗎?
但是,如果這時候繼續去執行的話,會發現開始報錯了,也就是深坑來了,這是因為脫離了整個開發環境。
先提一下testng的執行步驟,假設自己寫個test.java,記住要最簡單的,別參合其他jar包之類的,其中包含包名為 simple ,類名為 test:
javac test.java java org.testng.TestNG -testclass simple.test
看似非常簡單,但是執行起來,到處都是錯誤,執行javac test.java,常見錯誤為:
java.lang.NoClassDefFoundError: com/beust/jcommander/
這是缺少因為缺少編譯時用到的jar包,需要下載 jcommander-1.72.jar,我們將它放置在testng的jar包一起(假設放置在/root/java/testng/目錄):
環境變量的CLASSPATH需要追加 :
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar:$TESTNG_HOME/jcommander-1.72.jar
繼續刷新環境配置:
source /etc/profile
這之后一般就可以順利編譯,出現 test.class 文件了。
如果出現其他錯誤,比如與testng相關的包不存在等等,請檢查環境變量配置是否正確。
最后就是運行的環節了,也是大家會遇到問題點最多的點了。
先提一下結構,比如上面 simple.test 的類,那么需要建立文件夾 simple 里面存放test.java。
CLASSPATH的環境變量里,需要有testng代碼文件和包的頂級目錄追加添加,假設為
/root/java/testng/ /root/java/testng/simple/test.java
有了這樣的結構前提,就可以通過命令執行了:
java org.testng.TestNG -testclass simple.test
出現結果,意味著運行成功了:
Total tests run: 1, Failures: 0, Skips: 0
如果你的代碼中有測試用例@Test,但run出現0的話,說明還是失敗的,只是沒有給明確的報錯而已。
當然到這里還沒意味著結束。
因為你可能還會遇到缺乏各種依賴的jar包的問題:
可以通過參數將這些jar包都引入
/root/java/testng/ /root/java/testng/simple/test.java
遠程調用windows下瀏覽器
以為這就搞定環境,萬事大吉了么?再補一刀,瀏覽器呢?沒有瀏覽器得問題應該怎么解決呢?
請使用selenium自帶的server部署到windows機器上。
這個問題的解決反而是比較簡單的:
下載 selenium-server-standalone-3.14.0.jar 包;
放在指定目錄(比如放在C盤根目錄);
cd到該目錄下:cd C:\
執行命令打開selenium remote服務:
java -jar selenium-server-standalone-3.14.0.jar -port 6666
接下來有人會問怎么指定瀏覽器?
只需要在java代碼里,使用下面語句就可以對剛才在windows啟動的服務進行調用了:
WebDriver driver = new RemoteWebDriver("http://ip:6666/wd/hub/", DesiredCapabilities.chrome());
以上就是怎么在docker中利用selenium+testng實現web自動化,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。