如何使用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不一致,可能缘由有不少种,还需深刻研究。

相关文章
相关标签/搜索