首先說一下背景,在項目中使用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不一致,可能緣由有不少種,還需深刻研究。