如何使用linux+xvfb+python+rfs+firefox+jenkins實現UI自動化

  首先說一下背景,在項目中使用windows執行機進行rfs腳本運行時,遇到兩個問題:python

  一、Jenkins的多個slave節點和master的鏈接經過windows插件去創建,若是出現slave斷連,沒法自動恢復鏈接且沒法及時獲得告警;linux

  二、Windows常常由於系統更新或者運行依賴的軟件、瀏覽器等使得環境變化致使腳本運行失敗且中斷,雖然有些更新能夠經過設置去關閉,但仍是會莫名其妙出現自動更新,或者有些提示窗口影響瀏覽器運行;ubuntu

所以思考是否可使用linux執行機來跑呢?通過屢次嘗試,的確能夠實現,不過各有其優缺點,文章後面會簡單總結。windows

 

如下是所需環境的搭建步驟:瀏覽器

一、安裝xvfb服務器

因現有資源限制,使用的linux虛擬機都是服務器版,無可視化界面;所以安裝一個能夠提供瀏覽器運行的虛擬環境,即xvfb。python2.7

通過屢次嘗試,最終選定了Ubuntu14.04以及Ubuntu16.04,這兩個版本親測可用,安裝方法以下:測試

apt-get install xvfbfirefox

二、安裝python插件

通常狀況下,ubuntu自帶python2.7,可直接使用。

三、安裝rfs環境

方法一,在線安裝,使用以下命令便可

apt-get install robotframework-selenium2Library

或者使用 pip install robotframework-selenium2Library

系統會根據源自動安裝最新版本的依賴包:selenium,robotframework,decorator。

方法二,使用安裝包安裝:

依次下載版本配套的selenium,robotframework,decorator,robotframework-selenium2Library;而後逐個解壓並使用python setup.py **安裝。

四、在Selenium2Library中新增關鍵字

因xvfb須要在運行瀏覽器以前啓動,而啓動方法默認的Selenium2Library庫中是沒有的,咱們先自定義兩個關鍵字用來啓動和關閉xvfb;只要在Selenium2Library原有關鍵字中添加如下代碼便可:

from pyvirtualdisplay import Display;

def Start_Virtual_Display(self):

  self.display = Display(visible=0, size=(1680,1050))

  self.display.start()

 

def Stop_Virtual_Display(self):

  self.display.stop()

五、根據selenium版本安裝firefox以及對應版本的驅動geckodriver

此步簡單,跳過

至此,運行腳本的環境應該OK了,咱們簡單寫一個腳本測試一下:

Run Keyword If    '${IsVirtualDisplay}' == 'YES'    Start Virtual Display

Open Browser    https://www.baidu.com    firefox

Close All Browsers

Run Keyword If    '${IsVirtualDisplay}' == 'YES'    Stop Virtual Display

以上腳本寫入test.txt文件裏,使用如下命令執行:

pybot -v IsVirtualDisplay:YES ../test.txt

運行開始之後會打出日誌以及運行結果,PASS即爲成功,失敗會有截圖。

 

經一段時間使用,發現徹底能夠解決上面遇到的兩個問題,可是同時也有同事反饋:

一、執行失敗時沒法經過觀察瀏覽器動做去定位問題;

二、部分元素操做結果和windows不一致,可能緣由有不少種,還需深刻研究。

相關文章
相關標籤/搜索