Linux服務器上UIRecorder環境搭建和持續集成

提到“自動化”,相信每一位測試同學對此都不陌生,只要能用代碼、工具或者其他自動執行的方式來代替手工執行都可稱之爲“自動化”。

 

 而UI自動化因其直觀、直接觸達上層功能業務、易學(錄製)等特點,被很多測試人員所青睞。然而,長期的積累和沉澱,人們發現,UI自動化的可維護性非常差,任何一個小的改動,都有可能導致原有的UI自動化腳本執行失敗,導致要不停地花費大量的時間來修改和維護腳本,這讓測試同學們非常的痛苦。因此UI自動化更適用於那些界面長期較爲穩定的、不易更改的功能,而對於那些經常會頻繁改動的功能則不太適合進行UI自動化,需要選擇接口自動化等其他方式進行測試。所以,UI自動化在測試的整個比重中佔的是相對比較少的。但儘管如此,UI自動化仍有其用武之地,如上線前的核心功能迴歸。頻繁地上線,導致需要頻繁地迴歸一些長期沒有修改但又比較重要的功能,倘若讓UI自動化來幫你分擔這部分任務,將大大降低重複勞動帶來的繁瑣和成本。

今天我們來介紹一個方便好用的UI自動化工具---UIRecorder。

 

UIRecorder是一款零成本UI自動化錄製工具,支持Windows,Mac,Linux系統。

 

UIRecorder安裝

1、安裝nodeJS

nodejs版本選擇在7.xx-8.xx之間,太高或者太低都不行~ 到時候安裝依賴的時候會安裝不上。

進入:https://nodejs.org/en/download/releases/ 下載對應版本即可

ssh進入linux服務器:

1)將nodejs安裝包下載到服務器上

wget

https://nodejs.org/download/release/v8.11.2/node-v8.11.2-linux-x86.tar.gz

2)解壓壓縮包

tar -xvf node-v8.11.2-linux-x86.tar.gz

3)建立軟連接變爲全局

ln -s node解壓文件夾路徑/bin/npm /usr/local/bin

ln -s node解壓文件夾路徑/bin/node /usr/local/bin

4)檢查是否安裝成功

node -v

當出現node版本號的時候表示安裝成功

2、安裝cnpm

npm安裝插件是從國外的服務器上下載,國內訪問的時候經常會出現下載不下來或者很慢的情況,所以安裝cnpm,從國內的鏡像下載插件。

npm install cnpm -g --registry=https://registry.npm.taobao.org

安裝成功後,後面需要npm的命令均可以通過cnpm來完成。

3、安裝chrome

方法1:

下載chrome安裝包

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

安裝:

sudo apt-get update

sudo dpkg -i google-chrome*.deb

sudo apt-get install -f

如果上述方法你安裝成功了,恭喜你,你是幸運的,反正我試了很多次,試到懷疑人生,依然木有安裝成功,欲哭無淚~~

 

方法2:

於是,我放棄了上述方法,直接使用chromium,安裝方法簡直不能更簡單:

sudo apt-get update

sudo apt-get install chromium-browser

 

(溫馨提示:chrome瀏覽器啓動不能以root用戶啓動,會報錯)

 

4、安裝chromedriver

由於服務器上都是無界面的,我們需要安裝xvfb支持無頭瀏覽器運行

sudo apt-get install xvfb

然後運行Xvfb -ac :7 -screen 0 1024x768x8 開啓xvfb

新開一個窗口,運行chromium,會發現有報錯:

不要慌,先執行:

export DISPLAY=:7

然後再執行chromium即可。

 

根據你安裝的chrome的版本,找到對應的chromedriver版本(一定要對應哦!不對應的話, 是無法驅動瀏覽器進行錄製和回放),下載並安裝。chrome和chromedriver對應關係參考:

https://blog.csdn.net/huilan_same/article/details/51896672

下載解壓後,將chromedriver建立軟連接,使其可以全局訪問,方法同上。

ln -s chromedriver解壓後路徑/chromedriver /usr/local/bin/chromedriver

 

5、安裝uirecorder

cnpm install uirecorder mocha -g

 

6、安裝selenium-standalone(回放時需要啓動它進行回放)

cnpm install selenium-standalone -g

selenium-standalone install

安裝成功後,運行selenium-standalone start如下圖表示運行正常:

7、安裝相關依賴插件

npm install mocha -g

npm install jwebdriver expect.js mocha-generators faker -save-dev

npm install jwebdriver chai faker -save-dev

 

通過以下命令檢查uirecorder以及依賴是否安裝成功

cnpm list uirecorder -g

cnpm list mocha -g

cnpm list mochawesome-uirecorder -g

若有出現對應的版本號,則表示安裝成功

 

8、檢查chrome與版本的對應關係

cnpm ls chromedriver -g

可見chromedriver版本是2.46.0,修改uirecorder安裝路徑下的package.json文件的chromedriver的版本號爲2.46.0。

如路徑

下的package.json文件中修改爲2.46.0

然後再執行cnpm install即可。

還有一個比較笨的辦法,就是通過命令:find / -name chromedriver

找到與uirecorder和selenium-standalone相關的所有路勁下的chromedriver,查看其版本,即逐個進入對應目錄下查看目錄下的chromedriver版本是否是你想要的版本,如果不是,複製一個,替換之,但名字要跟之前的名字保持一樣(不同目錄下名字可能不一樣,有的叫chromedriver,有的叫chromedriver-2.46.0XXX類似;爲了以防萬一,可以將原有的chromedriver暫時改成原名字.bak備份)

 

9、新建一個空的目錄,作爲uirecorder初始化的目錄,如uirecorderInit

cd uirecorderInit

uirecorder init

到此服務端環境搭建完成。

 

10、回放

由於是無界面的服務器端,所以主要是通過在本地錄製好腳本,服務器端負責回放,用做日常回歸用。

但是本地錄製的腳本還不能直接到服務器上執行,因爲服務器端是無頭方式回放,所以需要對各個腳本的chromeOptions配置進行稍加修改即可。

1)修改配置

原配置:

'chromeOptions': {

'args': ['--enable-automation']

}

修改爲:

'chromeOptions': {

'args': ['--enable-automation','--disable-extensions','--headless','window-size=1024,768','--no-sandbox','--disable-gpu']

}

可以寫腳本批量修改,在每次回放前自動修改對應配置。

2)修改完配置,就可以開始回放了,首先啓動selenium-standalone start,然後執行

mocha xxx.spec.js,然後發現chrome初始化失敗!咦?爲啥子呢,剛剛還測試可以正常啓動chrome呢,回放的時候咋提示chrome初始化失敗了呢?原因是,剛剛啓動的時候指定了界面即export display=:7,則回放的時候,服務啓動窗口也需要事先指定纔可以,所以在啓動selenium-standalone時,需要先export DISPLAY=:7,然後再selenium-standalone start,然後就可以回放啦!

如需批量回放生成報告,可執行:mocha 腳本路徑/*.spec.js --reporter mochawesome-uirecorder

如此終於大功告成啦~

11、環境切換,uirecorder支持環境切換,可以修改hosts文件中的域名綁定即可。

jenkins上設置可以選擇環境的選項:

然後編寫腳本,根據選擇的環境,修改hosts文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章