Docker下使用selenium+testng實現web自動化

Windows下selenium+testng的web自動化環境搭建

作過自動化的人,確定對selenium web環境的搭建很是熟悉了,特別是selenium在java中的使用。html

先搭建好安裝好JDK,配置好java開發環境(這個若是仍是不知怎麼操做的話但是要打PP了)。而後從官網下載對應selenium的jar包,加載到項目裏;或者是使用maven,修改pom.xml文件直接加載selenium的依賴包便可:java

1 <dependency>
2     <groupId>org.seleniumhq.selenium</groupId>
3     <artifactId>selenium-java</artifactId>
4     <version>3.14.0</version>
5 </dependency>

接着加上對應的瀏覽器驅動文件,就基本搞定環境了,能夠開始自動化測試代碼之路了。linux

固然你們在編寫代碼的過程當中也會用到如今流行的單元測試框架testng。如何在這基礎上增長testng環境?其實這也不是什麼難事,在testng的官網(https://testng.org/doc/index....)提供了Eclipse、IEDA等編輯器下如何安裝插件,好比Eclipse直接進入Market搜索testng安裝便可,使用maven則須要在pom.xml中添加依賴包:web

1 <repositories>
 2   <repository>
 3     <id>jcenter</id>
 4     <name>bintray</name>
 5     <url>http://jcenter.bintray.com</url>
 6   </repository>
 7 </repositories>
 8 
 9 <dependency>
10   <groupId>org.testng</groupId>
11   <artifactId>testng</artifactId>
12   <version>6.10</version>
13   <scope>test</scope>
14 </dependency>

無腦等待下載安裝完成,後續就是寫代碼了,而後就能夠自由的揮灑了。
可是今天要介紹的不是上面這些,這種環境的搭建很是簡單,大多數人其實都會,坑也很少,只是個代碼環境而已。面試

咱們此次要處理的麻煩事是什麼呢?在如今日益發達的docker模式下,上述的編譯環境無法在linux系統上跑了,沒了代碼編輯器、沒了界面、也沒了瀏覽器,那應該如何操做呢?讓咱們來看一看。chrome

Docker的安裝與使用

一樣的,仍是須要java+selenium+testng,只不過環境從windows變成了linux。docker

關於docker的使用這裏稍稍給你們介紹一下安裝、啓動過程:windows

直接使用yum install docker命令安裝;centos

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

加入內容:

1 export JAVA_HOME=/root/java/jdk1.8.0_181  
2 export JRE_HOME=${JAVA_HOME}/jre
3 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
4 export PATH=${JAVA_HOME}/bin:$PATH

若是對軟件測試、接口測試、自動化測試、性能測試、LR腳本開發、面試經驗交流。感興趣能夠175317069,羣內會有不按期的發放免費的資料連接,這些資料都是從各個技術網站蒐集、整理出來的,若是你有好的學習資料能夠私聊發我,我會註明出處以後分享給你們。

刷新環境變量配置:

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:

export TESTNG_HOME=/root/java/testng
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar

看似很是簡單,可是執行起來,處處都是錯誤,執行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代碼文件和包的頂級目錄追加添加,假設爲

1 /root/java/testng/
2 /root/java/testng/simple/test.java

若是對軟件測試、接口測試、自動化測試、性能測試、LR腳本開發、面試經驗交流。感興趣能夠175317069,羣內會有不按期的發放免費的資料連接,這些資料都是從各個技術網站蒐集、整理出來的,若是你有好的學習資料能夠私聊發我,我會註明出處以後分享給你們。

有了這樣的結構前提,就能夠經過命令執行了:

java org.testng.TestNG -testclass simple.test

出現結果,意味着運行成功了:

Total tests run: 1, Failures: 0, Skips: 0

若是你的代碼中有測試用例@Test,但run出現0的話,說明仍是失敗的,只是沒有給明確的報錯而已。

固然到這裏還沒意味着結束。

由於你可能還會遇到缺少各類依賴的jar包的問題:

能夠經過參數將這些jar包都引入

javac -Djava.ext.dirs=/root/java/jar test.java
java -Djava.ext.dirs=/root/java/jar org.testng.TestNG -testclass simple.test

遠程調用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());

另外注意服務器上仍是須要瀏覽器的driver驅動文件,無腦一點就和jar包放一塊兒就完事了,愛折騰的能夠本身研究一把,區別只是啓動服務時須要帶上一些參數。

整個docker下使用selenium+java遠程調用widows下Chrome瀏覽器,實現web自動化的環境搭建完畢。

原文:https://blog.csdn.net/Testing...

相關文章
相關標籤/搜索