Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自動化測試

Windows在Linux上搭建自動化測試

自動化測試好處很多,可以提高測試執行效率,節約時間成本,解放人力去做更重要的工作,可重復利用,建設對人的依賴等等。但是不能一直占據著某臺電腦來跑自動化腳本,那樣太浪費資源了,所以將其部署到服務器上默默的在后臺運行是一個不錯的選擇。

但是想要在Linux下搭建自動化測試需要怎么做呢?我是這么做的:

首先,我先捋了一下我有什么:

Windows電腦

Linux服務器

自動化測試框架:

1. Java

2. Selenium

3. Junit

4. cucumber

5. IntelliJ

其次,我的需求:

我需要在linux服務器上跑自動化測試

并且,我需要它定時的在Linux服務器上跑。

現在,看一下我具體是怎么做的吧:

連接Linux服務器

安裝Java in Linux

安裝Git in Linux

Linux 下建立 Git 與 GitHub 的連接并克隆到本地

遠程連接 linux 服務器安裝 maven

xshell 遠程連接 Linux 服務器安裝 Tomcat

安裝Chrome in Linux

安裝Chromedriver in Linux

安裝Docker in Linux

安裝Jenkins in Linux

配置Jenkins

配置代碼讓其在linux無頭模式跑

具體步驟如下:

01、 連接Linux服務器

首先需要知道自己的服務器信息,以下是我自己的:

* 我電腦是Windows的

* Linux遠程服務器:

* 主機: 121.1xx.xx.xx

* 端口號:20222

* 賬戶: yingying.shang

* 密碼:xxxxxxxx

然后我們需要下載xshell,用來連接服務器

Step1.?xshell 官方下載地址: 可以選擇填寫信息試用30天

Step2.?左上角點擊文件,新建一個會話屬性

Step3.?在連接頁面填寫信息,以下是我自己的信息可以參考下

* 名稱: UItest

* 協議:SSH

* 主機:121.199.79.27

* 端口號: 20222

Step4.?點擊用戶身份驗證,選擇登錄驗證方式,可以選擇Public Key或者Password,這里選擇的Public Key

* 方法:Public Key

* 用戶名:yingying.shang

Step5.?根據生成公鑰

Step6.?點擊下一步生成公鑰對,然后再點擊下一步,將生成的公鑰發給運維同事,進行權限配置

Step7.?最后結果如下圖

02、 安裝Java in Linux

首先先看一下Linux上是否已經安裝了Java,可以在xshell里面使用命令來查看:

xshell 命令:

查看Java位置:

1. whereis java

2. which java

執行以下命令,可以卸載已經有了的JDK

3. sudo yum remove jdk1.8.0_181

如果沒有Java可以通過以下步驟進行安裝,如果有Java但是Java版本太低可以先卸載再通過以下步驟安裝:

Note:?也可以直接通過命令"yum install -y java-1.8.0-openjdk-devel.x86_64" 來安裝Java,這種安裝方式快,但是安裝的是低版本的Java,對版本要求不高的可以使用這種方式。

Step1.?下載Java JDK

Java SE 下載地址: https://www.oracle.com/java/technologies/javase-jdk14-downloads.html

Step2.?將下載的JDK壓縮包通過xshell命令上傳到Linux上

在xshell上輸入命令: sudo rz

然后選擇JDK壓縮包,并上傳到Linux上

Step3.?解壓JDK安裝包,并安裝

解壓縮命令為:tar -zxvf 文件名 -C 目標目錄

tar -zxvf jdk-14.0.1_linux-x64_bin.rpm -C /usr/local/

解壓完成

查看解壓文件

ll /usr/local/

Step4.?配置JDK的環境變量

打開/etc/profile:?sudo vim /etc/profile

按下i鍵出現——插入——即可進行編輯,在該文件最后增加環境變量配置

export JAVA_HOME=/usr/local/java

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

注:JAVA_HOME“=”后面為JDK的安裝路徑


編輯完成后,按下esc鍵,現在——插入——字樣消失

輸入:wq保存退出

確認后回到命令行

使配置生效:?source /etc/profile

JDK的驗證:?java -version

03、 安裝Git in Linux

源碼編譯安裝git (yum install git 版本太低,會造成Jenkins無法與git repo相連)

Step1.?獲取github最新的Git安裝包下載鏈接,進入Linux服務器,執行下載https://github.com/git/git/releases 命令為: wget https://github.com/git/git/archive/v2.26.2.tar.gz

Step2.?壓縮包解壓,命令為: tar -zxvf v2.26.2.tar.gz

Step3.?安裝編譯源碼所需依賴,命令為: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 耐心等待安裝,出現提示輸入y即可

Step4.?安裝依賴時,yum自動安裝了Git,需要卸載舊版本Git,命令為: yum remove git 出現提示輸入y即可

Step5.?進入解壓后的文件夾,命令 cd git-2.26.2

Step6.?然后執行編譯,命令為 make prefix=/usr/local/git all 耐心等待編譯即可

Step7.?查看git目錄:whereis git

04、 Linux 下建立 Git 與 GitHub 的連接并克隆到本地

Step1.?查看 Git 版本信息: git version

Step2.?配置 Git 用戶信息:

git config --global user.name “woider”

git config --global user.email “woider@gmail.com”

Step3.?開啟 SSH 服務: ps -e | grep sshd

Step4.?生成 SSH KEY: ssh-keygen -t rsa -C “shang.yingying@xxx.cn”

生成 ssh key 過程中,會讓你填寫 passphrase,連按三次回車跳過即可, id_rsa 為私鑰,id_rsa.pub 為公鑰

The key fingerprint is:

SHA256:pdrXd6xxxxxxRb9I3Og20TpUqrlx55iZ9HnW9W5lztsaU shang.yingying@xxxxx.cn

Step5.?查看 SSH KEY (id_rsa 為私鑰,id_rsa.pub 為公鑰)

Step6.?ssh-rsa AAAAB3Nz…(很長)…9gGmx shang.yingying@xxxx.cn

進入目錄:cd /root/.ssh

查看文件:ls -a

打開 id_rsa.pub 文件,將內容復制到剪貼板: vim id_rsa.pub

git@github.com:xx_xxx_xxx/qa-web-functional-test.git (修改成自己的repo)

Step7.?添加 SSH KEY

登錄 GitHub,打開 Personal settings 頁面,選擇 SSH and GPG keys 選項

點擊New SSH key

添加Title

添加剛剛復制的Key

點擊Add SSH key

Step8:?如果沒有自己的倉庫就創建一個,下面是通過 SSH 地址將 GitHub 倉庫克隆到本地: git clone git@github.com:xxx/xxx.git

第一次連接時,需要你確認 GitHub 的 Key 的指紋信息是否真的來自 GitHub 的服務器。

克隆到本地的倉庫會自動關聯遠程倉庫,可以通過 git remote -v 命令查看關聯狀態

Step9:?關聯后可以通過 git push origin master 命令推送修改

注意:如果克隆的是其他人的倉庫,由于沒有權限,你將不能推送修改

05、 遠程連接 linux 服務器安裝 maven

1. 下載Maven: http://archive.apache.org/dist/maven/maven-3/

2. 把下載的maven包上傳到linux:sudo rz

3. 將上傳好的maven解壓到/dev目錄下,輸入命令: tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /dev/

4. 打開環境變量配置文檔: vim /etc/profile

5. 在環境變量配置文檔最末尾處,添加以下內容:

- export PATH=$PATH:$MAVEN_HOME/bin

- export MAVEN_HOME=/dev/apache-maven-3.6.3

6. Maven 配置成功:mvn -version


06、 xshell 遠程連接 Linux 服務器安裝 Tomcat

1. 下載并上傳tomcat 到linux: sudo rz

2. xshell解壓Tomcat壓縮包: sudo tar -vxf apache-tomcat-7.0.94.tar.gz -C/usr/local

3. 進入tomcat安裝bin目錄并啟動Tomcat:

1. cd /usr/local/apache-tomcat-7.0.94/bin

2. ./startup.sh


07、 安裝Chrome in Linux

Step1:?命令在Linux安裝chrome瀏覽器:?yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Step2:?使用命令查看版本:?google-chrome --version

Step3:?我的版本是:(Google Chrome 83.0.4103.61)

08、 安裝Chrome webdriver in Linux

Step1:?下載Linux版本的chromewebdriver

http://chromedriver.storage.googleapis.com/index.html?path=83.0.4103.39/

Step2:?將下載的壓縮包上傳到Linux

? 在xshell上輸入命令: **sudo rz**

? 然后選擇chromewebdriver壓縮包,并上傳到Linux上

Step3:?解壓chromewebdriver安裝包:?unzip chromedriver_linux64.zip

Step4:?將chrome driver移動到/usr/bin目錄

chmod用于改變文件或目錄的訪問權限。用戶用它控制文件或目錄的訪問權限, +x未添加可執行權限:?chmod +x chromedriver

強制將chromedriver移動到指定目錄:sudo mv -f chromedriver /usr/local/share/chromedriver

(sudo ln -s 源文件 目標文件)為chromedriver在另外一個位置建立一個同步的鏈接,類似Windows下的超級鏈接:?sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

為chromedriver在另外一個位置建立一個同步的鏈接,類似Windows下的超級鏈接:sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

如果已經挪過文件,再次挪到相同位置會報下面的錯。

Step5:?查看/usr/bin目錄下是否有chromedriver文件(whereis中間沒有空格):whereis chromedriver

Step6:?查看chromedriver版本:chromedriver -version

09、 安裝Docker in Linux

Step1:?安裝docker: sudo wget -qO- https://get.docker.com | sh

Step2:?查看docker版本: docker version

Step3:?啟動docker服務: service docker start

Step4:?查看docker存儲位置: docker info

10、 安裝Jenkins in Linux

Step1:?添加存儲庫: yum的repo中默認沒有Jenkins,需要先將Jenkins存儲庫添加到yum repos,執行下面的命令:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Step2:?安裝jenkins

輸入命令:yum install jenkins

出現詢問是否下載時,輸入y,然后點擊回車,耐心等待安裝完成

Step3:?修改配置(jenkins安裝成功后,默認的用戶是jenkins,端口是8080,為了防止沖突,并且給用戶賦權限,我們修改用戶名和端口。)

* 進入jenkins配置文件: vi /etc/sysconfig/jenkins

* 修改port為8081, username=root

Note: 移動界面上的光標到需要修改的地方,點擊‘x’刪除原有的配置,點擊‘i’,這時候界面下方會出現一個-- insert --,這時候就可以輸入需要修改的內容;修改完成后,輸入‘wq!’保存!

Step4:?啟動服務: service jenkins start

Step5:?找運維同事配置端口號(例如我的是47.111.79.143:8081)

Step6:?然后在瀏覽器輸入IP+端口,就可以打開Jenkins進行插件安裝等后續操作了

11、 配置Jenkins

Step1:?jenkins拿管理員密碼登錄: vim /var/lib/jenkins/secrets/initialAdminPassword

Step2:?輸入這個命令可以看到密碼: sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Step3:?在瀏覽器打開Jenkins并輸入管理員密碼,進入Jenkins

Step4:?配置jenkins的JDK

點擊系統管理→全局工具配置:

從全局工具配置里面找到JDK,點擊JDK安裝按鈕,輸入JDK的別名和路徑(路徑應該是/usr/lib/jvm/java-1.8.0),然后點擊保存

Step5:?配置jenkins的Git路徑

同樣在全局工具配置界面找到Git,點擊Git安裝按鈕,輸入Git的別名和路徑(按照之前博客里的方法,路徑應該是/usr/local/git/bin/git),然后點擊保存

Step6:?Git和github關聯 (之前關聯過了可以不用再關聯了)

進入Linux服務器,輸入命令生成SSH公鑰私鑰,郵箱需要輸入自己的郵箱: ssh-keygen -t rsa -C “test@email.com”

生成公鑰私鑰時有輸入框提示你輸入文件地址和密碼,直接回車跳過,使用默認地址,不設置密碼。

然后輸入命令 tail /root/.ssh/id_rsa.pub 獲取公鑰

然后復制公鑰,打開github,在settings→SSH and GPR keys中點擊添加,輸入公鑰,點擊保存

Step7:?構建任務

回到jenkins首頁,點擊新建一個自由風格的項目

在Repository URL一欄輸入你的github項目地址

然后點擊Add,選擇jenkins,按照下圖的標識選擇對應的選項,點擊Add:

然后保存設置,回到控制臺,點擊立即構建,進行調試。

回到控制臺,進入任務模塊點擊快速構建,然后查看構建結果和日志

Step7:?服務器文件校驗

任務構建結束后,如果沒問題,可以進入服務器,通過命令 /var/lib/jenkins/workspace 進入jenkins的的工程目錄,進入文件夾,可以看到相關的測試文件

到這里,使用jenkins從git倉庫下載代碼并進行構建,配置完成

12、 配置代碼讓其在linux無頭模式跑

1. “–no-sandbox”參數是讓Chrome在root權限下跑

2. “–headless”參數是不用打開圖形界面

以下是我封裝的WebDriverManager,專門處理driver的。

public class WebDriverManager {

private WebDriver driver;

private static final String WEB_DRIVER_KEY = "webdriver.chrome.driver";

public WebDriver getDriver() {

? ? if (driver == null) driver = createDriver();

? ? return driver;

}

private WebDriver createDriver() {

? ? System.setProperty(WEB_DRIVER_KEY, getDriverPath());

? ? ChromeOptions chromeOptions = new ChromeOptions();

? ? chromeOptions.addArguments("start-maximized");

? ? if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {

? ? ? ? chromeOptions.addArguments("headless");

? ? ? ? chromeOptions.addArguments("--disable-gpu");

? ? ? ? chromeOptions.addArguments("window-size=1024,768");

? ? ? ? chromeOptions.addArguments("--no-sandbox");

? ? }

? ? this.driver = new ChromeDriver(chromeOptions);

? ? this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

? ? return driver;

}

private String getDriverPath() {

? ? OSInfo.OSType osType = OSInfo.getOSType();

? ? return String.format("lib%schromedriver_%s", File.separator, osType.toString());

}

}


參考資料:

[1]: Jenkins官網: https://www.jenkins.io/doc/

[2]: 官網下載Jenkins: https://www.jenkins.io/doc/book/installing/https://www.jenkins.io/doc/book/installing/

[3]: https://blog.csdn.net/qq_39720249/article/details/84287598#%E4%BA%94%E3%80%81%E6%9F%A5%E7%9C%8Bmaven%E5%AE%89%E8%A3%85%E6%88%90%E5%8A%9F

[4]: https://www.cnblogs.com/imyalost/p/8762494.html

[5]: https://www.toolsqa.com/selenium-cucumber-framework/design-webdriver-manager/

[6]: https://medium.com/@oleksii/how-to-deploy-jenkins-agent-and-connect-it-to-jenkins-master-in-microsoft-azure-ffeb085957c0

[7]: https://www.cnblogs.com/hanguozhi/p/8892952.html

[8]: https://www.cnblogs.com/yuanzipeng/p/10739706.html

[9]: https://www.cnblogs.com/Berryxiong/p/6193866.html

[10]: https://blog.csdn.net/Fiverya/article/details/98869750?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

[11]: https://blog.csdn.net/qq_36938617/article/details/88939095

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374