構(gòu)建Web UI 自動(dòng)化測(cè)試環(huán)境(2)
2.替換系統(tǒng)默認(rèn)更新源。把系統(tǒng)更新源替換為 163 的,后面的軟件安裝速度會(huì)比較快一些。 3.安裝必要的軟件(不包括 Oracle Java 和 Sahi):Firefox, Unzip 以及 X2.替換系統(tǒng)默認(rèn)更新源。把系統(tǒng)更新源替換為 163 的,后面的軟件安裝速度會(huì)比較快一些。
3.安裝必要的軟件(不包括 Oracle Java 和 Sahi):Firefox, Unzip 以及 Xvfb。刪除 Open JDK 是為了后面安裝 Oracle Java 做準(zhǔn)備。Firefox 不用多說,因?yàn)樵撶R像用于 Web UI 自動(dòng)化測(cè)試,所以安裝了最新版本的 Firefox。安裝 Unzip 是因?yàn)楹竺姘惭b Sahi 需要用到它。Xvfb(X virtual framebuffer)是一個(gè) X11 顯示服務(wù)器的實(shí)現(xiàn)。它不是將圖形在屏幕上顯示出來,而是在內(nèi)存中運(yùn)行所有的圖形操作。對(duì)客戶端來說,除了無法看到真正的圖形顯示,沒有其他分別。一般稱這種運(yùn)行方式為 headless。
4.安裝 Oracle Java 8。理論上 Sahi 應(yīng)當(dāng)也支持 Open JDK,所以安裝 Oracle Java 不是必須的。
5.安裝 Sahi。上傳了 zip 文件后,用 Unzip 解壓,Sahi 是基于 Java 的,所以解壓后即已安裝好 Sahi。之后,替換了幾個(gè)文件,它們的作用如下:
Userdata.properties
userdata.properties 中有個(gè)屬性叫 proxy_alert.disabled,默認(rèn)值為 false。用戶第一次啟動(dòng) Sahi Dashboard 的時(shí)候,會(huì)彈出一個(gè)如下圖所示的對(duì)話框。用戶勾選了“Do no show this message again”并點(diǎn)擊 Continue 按鈕之后,Sahi 修改該屬性值為 true。之后就不會(huì)在跳出這個(gè)對(duì)話框了。由于用 headless 的方式運(yùn)行 Sahi 無法點(diǎn)擊該對(duì)話框,所以必須事先用一個(gè)已將該屬性設(shè)置為 true 的文件替換 Sahi 默認(rèn)的 userdata.properties。
圖 3. Sahi 代理問題對(duì)話框
sahi_example_com
這是一個(gè)證書文件。用戶第一次在 Sahi Dashboard 中打開 Firefox 時(shí)的頁(yè)面如下圖所示。用戶需要點(diǎn)擊 SSL Manager 鏈接手動(dòng)接受 SSL 證書。此時(shí),文件 sahi_example_com 被生成到 userdata/certs 目錄下。之后,就不需要再進(jìn)行該操作了。所以,復(fù)制的 sahi_example_com 目的也是為了自動(dòng)完成這步需要在圖形界面下才能完成的操作。
圖 4. Sahi 啟動(dòng)頁(yè)
圖 5. SSLManager 的非信任連接頁(yè)面
browser_types.xml
替換該文件是為了使 Sahi 以 headless 的方式工作。在該文件中,事先添加了一個(gè)名字為 firefox-xvfb 的瀏覽器配置信息。之后,測(cè)試腳本就可以指向該瀏覽器運(yùn)行。具體配置 Sahi 和 Xvfb 的步驟參考。
6.添加 init.sh 文件
init.sh 文件用于啟動(dòng) Xvfb 和 Sahi。其內(nèi)容如下。
圖 6. init.sh 文件內(nèi)容
“sleep 5”是因?yàn)?Sahi 啟動(dòng)需要一點(diǎn)時(shí)間,若立即運(yùn)行測(cè)試腳本會(huì)導(dǎo)致失敗。
7.修改權(quán)限
最終運(yùn)行的容器是作為 Jenkins Slave 節(jié)點(diǎn)用 Jenkins 用戶運(yùn)行,因此將整個(gè)/usr/local 目錄及子目錄的所有人修改為 Jenkins,并給 Shell 文件添加執(zhí)行權(quán)限。Jenkins 用戶是在基礎(chǔ)鏡像 evarga/jenkins-slave 中創(chuàng)建的,所以在這個(gè) Dockerfile 里沒有創(chuàng)建 Jenkins 用戶的語句。
8.指定默認(rèn)執(zhí)行的命令
CMD ["/usr/sbin/sshd","-D"] – 該語句令鏡像默認(rèn)啟動(dòng) SSH 服務(wù)。事實(shí)上,這條語句也可以不添加,因?yàn)?evarga/jenkins-slave 的 Dockerfile 中已包含該語句。
一切就緒之后,在該目錄中執(zhí)行“docker build -t shenrui/sahi –rm=true”。命令成功執(zhí)行后,通過“docker images”應(yīng)當(dāng)可以查看到名為“shenrui/sahi”的鏡像。該鏡像已經(jīng)上傳到 Docker Hub,有需要的讀者可以自行拉取。
Sahi 鏡像構(gòu)建好之后,接下來準(zhǔn)備 Jenkins 容器。Docker Hub 上已有官方的 Jenkins 鏡像,直接用命令“docker pull jenkins”拉取。在 Docker 主機(jī)上,創(chuàng)建一個(gè)目錄(例如,/data/jenkins_home),并修改權(quán)限(chmod 777)以便 Jenkins 容器能讀寫該目錄,然后用命令“docker run -d -t --name myjenkins -p 8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins”啟動(dòng)。此時(shí),打開 http://:8080 應(yīng)當(dāng)可以看到 Jenkins 的管理頁(yè)面。 同樣地,直接拉取 Docker Hub 的 Subversion 的鏡像(docker pull bsboiko/subversion)。不過,還需要做進(jìn)一步的配置。步驟如下:
用命令“docker run -i -t bsboiko/subversion /bin/bash”以交互的方式啟動(dòng) Subversion 容器。
頁(yè):
[1]