如何使用linux+xvfb+python+rfs+firefox+jenkins实现UI自动化
首先说一下背景,在项目中使用windows执行机进行rfs脚本运行时,遇到两个问题:
1、Jenkins的多个slave节点和master的连接通过windows插件去建立,如果出现slave断连,无法自动恢复连接且无法及时得到告警;
2、Windows经常因为系统更新或者运行依赖的软件、浏览器等使得环境变化导致脚本运行失败且中断,虽然有些更新可以通过设置去关闭,但还是会莫名其妙出现自动更新,或者有些提示窗口影响浏览器运行;
因此思考是否可以使用linux执行机来跑呢?经过多次尝试,的确可以实现,不过各有其优缺点,文章后面会简单总结。
以下是所需环境的搭建步骤:
1、安装xvfb
因现有资源限制,使用的linux虚拟机都是服务器版,无可视化界面;因此安装一个可以提供浏览器运行的虚拟环境,即xvfb。
经过多次尝试,最终选定了Ubuntu14.04以及Ubuntu16.04,这两个版本亲测可用,安装方法如下:
apt-get install xvfb
2、安装python
一般情况下,ubuntu自带python2.7,可直接使用。
3、安装rfs环境
方法一,在线安装,使用如下命令即可
apt-get install robotframework-selenium2Library
或者使用 pip install robotframework-selenium2Library
系统会根据源自动安装最新版本的依赖包:selenium,robotframework,decorator。
方法二,使用安装包安装:
依次下载版本配套的selenium,robotframework,decorator,robotframework-selenium2Library;然后逐个解压并使用python setup.py **安装。
4、在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()
5、根据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即为成功,失败会有截图。
经一段时间使用,发现完全可以解决上面遇到的两个问题,但是同时也有同事反馈:
1、执行失败时无法通过观察浏览器动作去定位问题;
2、部分元素操作结果和windows不一致,可能原因有很多种,还需深入研究。
如何使用linux+xvfb+python+rfs+firefox+jenkins实现UI自动化的更多相关文章
- Python结合Pywinauto 进行 Windows UI 自动化
转:Python结合Pywinauto 进行 Windows UI 自动化 https://blog.csdn.net/z_johnny/article/details/52778064 说明:Pyw ...
- [python]RobotFramework自定义库实现UI自动化
1.安装教程 环境搭建不多说,网上资料一大堆,可参考https://www.cnblogs.com/puresoul/p/3854963.html,写的比较详细,值得推荐.目前python3是不支持r ...
- python(pytest)+allure+jenkins 实现接口自动化的思路
效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...
- Jenkins下构建UI自动化之初体验
一.缘 起 笔者之前一直在Windows环境下编写UI自动化测试脚本,近日在看<京东系统质量保障技术实战>一书中,萌生出在jenkins下构建UI自动化测试的想法 二.思 路 首先,在Li ...
- Python UI自动化
Python3--Uiautomator2--Pytest--Alure使用 官方源码GitHub地址:https://github.com/openatx/uiautomator2 介绍 uiaut ...
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- linux下python相关命令
若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) python3 ...
- 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
本文为霍格沃兹测试学院学员学习笔记. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下十个部分,供大家参考.如有错误的地方,欢迎 ...
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
随机推荐
- linux find命令-print0和xargs中-0使用技巧
文章是转载的,原文很精彩,我对其中个别地方没有快速理解,我在此予以补充,方便后续回顾理解. 本文介绍了linux find命令中-print0和xargs中-0用法技巧,一些find命令的使用经验,需 ...
- java中字符串“不可变性”的破坏,使用反射破坏final属性。以及涉及到字符串常量池的问题。
大家都清楚java中String类是不可变的,它的定义中包含final关键字.一旦被创建,值就不能被改变(引用是可以改变的). 但这种“不可变性”不是完全可靠的,可以通过反射机制破坏.参考一下代码: ...
- 使用mbedtls的使用说明和AES加密方法(原来的PolarSSL)
关于PolarSSL mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站 ...
- Hadoop学习------Hadoop安装方式之(三):分布式部署
这里为了方便直接将单机部署过的虚拟机直接克隆,当然也可以不这样做,一个个手工部署. 创建完整克隆——>下一步——>安装位置.等待一段时间即可. 我这边用了三台虚拟机,分别起名master, ...
- Linux文件属性描述
mtime -- modify time 修改时间 硬链接硬链接(hard link, 也称链接)就是一个文件的一个或多个文件名.再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来. ...
- 关于SpringCloud配置网关转发时出现一下啊错误:“com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException”
com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul ...
- java接口深入
1.抽象类. java常规类中,有些方法并不是固定的,而是在不同的情况下有不同的实现的,比如一个人,在公司要工作,在学校要学习,在食堂要吃饭,但是这个人还有相同的地方,比如不论在哪里都要呼吸,看,挺, ...
- Autolayout Breakpoints
articles archives team Autolayout Breakpoints Auto layout has become a crucial tool for iOS and OS X ...
- 在IE浏览器中url传参长度问题
1.在这之前我一直以为,应该说是并没有去思考过,url地址传参的长度限制问题:知道在项目材料价格系统中遇到之后,才对这个问题进行了具体的探索.IE中最大的长度限制为2084个,用于get传递数据的长度 ...
- Windows gitweb安装
/******************************************************************************* * Windows gitweb安装 ...