Windows在Linux上搭建自動(dòng)化測(cè)試
自動(dòng)化測(cè)試好處很多,可以提高測(cè)試執(zhí)行效率,節(jié)約時(shí)間成本,解放人力去做更重要的工作,可重復(fù)利用,建設(shè)對(duì)人的依賴等等。但是不能一直占據(jù)著某臺(tái)電腦來(lái)跑自動(dòng)化腳本,那樣太浪費(fèi)資源了,所以將其部署到服務(wù)器上默默的在后臺(tái)運(yùn)行是一個(gè)不錯(cuò)的選擇。
但是想要在Linux下搭建自動(dòng)化測(cè)試需要怎么做呢?我是這么做的:
首先,我先捋了一下我有什么:
Windows電腦
Linux服務(wù)器
自動(dòng)化測(cè)試框架:
1. Java
2. Selenium
3. Junit
4. cucumber
5. IntelliJ
其次,我的需求:
我需要在linux服務(wù)器上跑自動(dòng)化測(cè)試
并且,我需要它定時(shí)的在Linux服務(wù)器上跑。
現(xiàn)在,看一下我具體是怎么做的吧:
連接Linux服務(wù)器
安裝Java in Linux
安裝Git in Linux
Linux 下建立 Git 與 GitHub 的連接并克隆到本地
遠(yuǎn)程連接 linux 服務(wù)器安裝 maven
xshell 遠(yuǎn)程連接 Linux 服務(wù)器安裝 Tomcat
安裝Chrome in Linux
安裝Chromedriver in Linux
安裝Docker in Linux
安裝Jenkins in Linux
配置Jenkins
配置代碼讓其在linux無(wú)頭模式跑
具體步驟如下:
首先需要知道自己的服務(wù)器信息,以下是我自己的:
* 我電腦是Windows的
* Linux遠(yuǎn)程服務(wù)器:
* 主機(jī): 121.1xx.xx.xx
* 端口號(hào):20222
* 賬戶: yingying.shang
* 密碼:xxxxxxxx
然后我們需要下載xshell,用來(lái)連接服務(wù)器
Step1.?xshell 官方下載地址: 可以選擇填寫(xiě)信息試用30天
Step2.?左上角點(diǎn)擊文件,新建一個(gè)會(huì)話屬性
Step3.?在連接頁(yè)面填寫(xiě)信息,以下是我自己的信息可以參考下
* 名稱: UItest
* 協(xié)議:SSH
* 主機(jī):121.199.79.27
* 端口號(hào): 20222
Step4.?點(diǎn)擊用戶身份驗(yàn)證,選擇登錄驗(yàn)證方式,可以選擇Public Key或者Password,這里選擇的Public Key
* 方法:Public Key
* 用戶名:yingying.shang
Step5.?根據(jù)生成公鑰
Step6.?點(diǎn)擊下一步生成公鑰對(duì),然后再點(diǎn)擊下一步,將生成的公鑰發(fā)給運(yùn)維同事,進(jìn)行權(quán)限配置
Step7.?最后結(jié)果如下圖
首先先看一下Linux上是否已經(jīng)安裝了Java,可以在xshell里面使用命令來(lái)查看:
xshell 命令:
查看Java位置:
1. whereis java
2. which java
執(zhí)行以下命令,可以卸載已經(jīng)有了的JDK
3. sudo yum remove jdk1.8.0_181
如果沒(méi)有Java可以通過(guò)以下步驟進(jìn)行安裝,如果有Java但是Java版本太低可以先卸載再通過(guò)以下步驟安裝:
Note:?也可以直接通過(guò)命令"yum install -y java-1.8.0-openjdk-devel.x86_64" 來(lái)安裝Java,這種安裝方式快,但是安裝的是低版本的Java,對(duì)版本要求不高的可以使用這種方式。
Step1.?下載Java JDK
Java SE 下載地址: https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
Step2.?將下載的JDK壓縮包通過(guò)xshell命令上傳到Linux上
在xshell上輸入命令: sudo rz
然后選擇JDK壓縮包,并上傳到Linux上
Step3.?解壓JDK安裝包,并安裝
解壓縮命令為:tar -zxvf 文件名 -C 目標(biāo)目錄
tar -zxvf jdk-14.0.1_linux-x64_bin.rpm -C /usr/local/
解壓完成
查看解壓文件
ll /usr/local/
Step4.?配置JDK的環(huán)境變量
打開(kāi)/etc/profile:?sudo vim /etc/profile
按下i鍵出現(xiàn)——插入——即可進(jìn)行編輯,在該文件最后增加環(huán)境變量配置
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鍵,現(xiàn)在——插入——字樣消失
輸入:wq保存退出
確認(rèn)后回到命令行
使配置生效:?source /etc/profile
JDK的驗(yàn)證:?java -version

源碼編譯安裝git (yum install git 版本太低,會(huì)造成Jenkins無(wú)法與git repo相連)
Step1.?獲取github最新的Git安裝包下載鏈接,進(jìn)入Linux服務(wù)器,執(zhí)行下載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 耐心等待安裝,出現(xiàn)提示輸入y即可
Step4.?安裝依賴時(shí),yum自動(dòng)安裝了Git,需要卸載舊版本Git,命令為: yum remove git 出現(xiàn)提示輸入y即可
Step5.?進(jìn)入解壓后的文件夾,命令 cd git-2.26.2
Step6.?然后執(zhí)行編譯,命令為 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.?開(kāi)啟 SSH 服務(wù): ps -e | grep sshd
Step4.?生成 SSH KEY: ssh-keygen -t rsa -C “shang.yingying@xxx.cn”
生成 ssh key 過(guò)程中,會(huì)讓你填寫(xiě) passphrase,連按三次回車(chē)跳過(guò)即可, 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…(很長(zhǎng))…9gGmx shang.yingying@xxxx.cn
進(jìn)入目錄:cd /root/.ssh
查看文件:ls -a
打開(kāi) id_rsa.pub 文件,將內(nèi)容復(fù)制到剪貼板: vim id_rsa.pub
git@github.com:xx_xxx_xxx/qa-web-functional-test.git (修改成自己的repo)
Step7.?添加 SSH KEY
登錄 GitHub,打開(kāi) Personal settings 頁(yè)面,選擇 SSH and GPG keys 選項(xiàng)
點(diǎn)擊New SSH key
添加Title
添加剛剛復(fù)制的Key
點(diǎn)擊Add SSH key
Step8:?如果沒(méi)有自己的倉(cāng)庫(kù)就創(chuàng)建一個(gè),下面是通過(guò) SSH 地址將 GitHub 倉(cāng)庫(kù)克隆到本地: git clone git@github.com:xxx/xxx.git
第一次連接時(shí),需要你確認(rèn) GitHub 的 Key 的指紋信息是否真的來(lái)自 GitHub 的服務(wù)器。
克隆到本地的倉(cāng)庫(kù)會(huì)自動(dòng)關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù),可以通過(guò) git remote -v 命令查看關(guān)聯(lián)狀態(tài)
Step9:?關(guān)聯(lián)后可以通過(guò) git push origin master 命令推送修改
注意:如果克隆的是其他人的倉(cāng)庫(kù),由于沒(méi)有權(quán)限,你將不能推送修改
05、 遠(yuǎn)程連接 linux 服務(wù)器安裝 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. 打開(kāi)環(huán)境變量配置文檔: vim /etc/profile
5. 在環(huán)境變量配置文檔最末尾處,添加以下內(nèi)容:
- export PATH=$PATH:$MAVEN_HOME/bin
- export MAVEN_HOME=/dev/apache-maven-3.6.3
6. Maven 配置成功:mvn -version
06、 xshell 遠(yuǎn)程連接 Linux 服務(wù)器安裝 Tomcat
1. 下載并上傳tomcat 到linux: sudo rz
2. xshell解壓Tomcat壓縮包: sudo tar -vxf apache-tomcat-7.0.94.tar.gz -C/usr/local
3. 進(jìn)入tomcat安裝bin目錄并啟動(dòng)Tomcat:
1. cd /usr/local/apache-tomcat-7.0.94/bin
2. ./startup.sh
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移動(dòng)到/usr/bin目錄
chmod用于改變文件或目錄的訪問(wèn)權(quán)限。用戶用它控制文件或目錄的訪問(wèn)權(quán)限, +x未添加可執(zhí)行權(quán)限:?chmod +x chromedriver
強(qiáng)制將chromedriver移動(dòng)到指定目錄:sudo mv -f chromedriver /usr/local/share/chromedriver
(sudo ln -s 源文件 目標(biāo)文件)為chromedriver在另外一個(gè)位置建立一個(gè)同步的鏈接,類似Windows下的超級(jí)鏈接:?sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
為chromedriver在另外一個(gè)位置建立一個(gè)同步的鏈接,類似Windows下的超級(jí)鏈接:sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
如果已經(jīng)挪過(guò)文件,再次挪到相同位置會(huì)報(bào)下面的錯(cuò)。
Step5:?查看/usr/bin目錄下是否有chromedriver文件(whereis中間沒(méi)有空格):whereis chromedriver
Step6:?查看chromedriver版本:chromedriver -version
Step1:?安裝docker: sudo wget -qO- https://get.docker.com | sh
Step2:?查看docker版本: docker version
Step3:?啟動(dòng)docker服務(wù): service docker start
Step4:?查看docker存儲(chǔ)位置: docker info
Step1:?添加存儲(chǔ)庫(kù): yum的repo中默認(rèn)沒(méi)有Jenkins,需要先將Jenkins存儲(chǔ)庫(kù)添加到y(tǒng)um repos,執(zhí)行下面的命令:
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
出現(xiàn)詢問(wèn)是否下載時(shí),輸入y,然后點(diǎn)擊回車(chē),耐心等待安裝完成
Step3:?修改配置(jenkins安裝成功后,默認(rèn)的用戶是jenkins,端口是8080,為了防止沖突,并且給用戶賦權(quán)限,我們修改用戶名和端口。)
* 進(jìn)入jenkins配置文件: vi /etc/sysconfig/jenkins
* 修改port為8081, username=root
Note: 移動(dòng)界面上的光標(biāo)到需要修改的地方,點(diǎn)擊‘x’刪除原有的配置,點(diǎn)擊‘i’,這時(shí)候界面下方會(huì)出現(xiàn)一個(gè)-- insert --,這時(shí)候就可以輸入需要修改的內(nèi)容;修改完成后,輸入‘wq!’保存!
Step4:?啟動(dòng)服務(wù): service jenkins start
Step5:?找運(yùn)維同事配置端口號(hào)(例如我的是47.111.79.143:8081)
Step6:?然后在瀏覽器輸入IP+端口,就可以打開(kāi)Jenkins進(jìn)行插件安裝等后續(xù)操作了
Step1:?jenkins拿管理員密碼登錄: vim /var/lib/jenkins/secrets/initialAdminPassword
Step2:?輸入這個(gè)命令可以看到密碼: sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Step3:?在瀏覽器打開(kāi)Jenkins并輸入管理員密碼,進(jìn)入Jenkins
Step4:?配置jenkins的JDK
點(diǎn)擊系統(tǒng)管理→全局工具配置:
從全局工具配置里面找到JDK,點(diǎn)擊JDK安裝按鈕,輸入JDK的別名和路徑(路徑應(yīng)該是/usr/lib/jvm/java-1.8.0),然后點(diǎn)擊保存
Step5:?配置jenkins的Git路徑
同樣在全局工具配置界面找到Git,點(diǎn)擊Git安裝按鈕,輸入Git的別名和路徑(按照之前博客里的方法,路徑應(yīng)該是/usr/local/git/bin/git),然后點(diǎn)擊保存
Step6:?Git和github關(guān)聯(lián) (之前關(guān)聯(lián)過(guò)了可以不用再關(guān)聯(lián)了)
進(jìn)入Linux服務(wù)器,輸入命令生成SSH公鑰私鑰,郵箱需要輸入自己的郵箱: ssh-keygen -t rsa -C “test@email.com”
生成公鑰私鑰時(shí)有輸入框提示你輸入文件地址和密碼,直接回車(chē)跳過(guò),使用默認(rèn)地址,不設(shè)置密碼。
然后輸入命令 tail /root/.ssh/id_rsa.pub 獲取公鑰
然后復(fù)制公鑰,打開(kāi)github,在settings→SSH and GPR keys中點(diǎn)擊添加,輸入公鑰,點(diǎn)擊保存
Step7:?構(gòu)建任務(wù)
回到j(luò)enkins首頁(yè),點(diǎn)擊新建一個(gè)自由風(fēng)格的項(xiàng)目
在Repository URL一欄輸入你的github項(xiàng)目地址
然后點(diǎn)擊Add,選擇jenkins,按照下圖的標(biāo)識(shí)選擇對(duì)應(yīng)的選項(xiàng),點(diǎn)擊Add:
然后保存設(shè)置,回到控制臺(tái),點(diǎn)擊立即構(gòu)建,進(jìn)行調(diào)試。
回到控制臺(tái),進(jìn)入任務(wù)模塊點(diǎn)擊快速構(gòu)建,然后查看構(gòu)建結(jié)果和日志
Step7:?服務(wù)器文件校驗(yàn)
任務(wù)構(gòu)建結(jié)束后,如果沒(méi)問(wèn)題,可以進(jìn)入服務(wù)器,通過(guò)命令 /var/lib/jenkins/workspace 進(jìn)入jenkins的的工程目錄,進(jìn)入文件夾,可以看到相關(guān)的測(cè)試文件
到這里,使用jenkins從git倉(cāng)庫(kù)下載代碼并進(jìn)行構(gòu)建,配置完成
1. “–no-sandbox”參數(shù)是讓Chrome在root權(quán)限下跑
2. “–headless”參數(shù)是不用打開(kāi)圖形界面
以下是我封裝的WebDriverManager,專門(mén)處理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官網(wǎng): https://www.jenkins.io/doc/
[2]: 官網(wǎng)下載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