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無頭模式跑
具體步驟如下:
首先需要知道自己的服務器信息,以下是我自己的:
* 我電腦是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.?最后結果如下圖
首先先看一下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
源碼編譯安裝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 命令推送修改
注意:如果克隆的是其他人的倉庫,由于沒有權限,你將不能推送修改
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
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
Step1:?安裝docker: sudo wget -qO- https://get.docker.com | sh
Step2:?查看docker版本: docker version
Step3:?啟動docker服務: service docker start
Step4:?查看docker存儲位置: docker info
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進行插件安裝等后續操作了
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倉庫下載代碼并進行構建,配置完成
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