docker+headless+robotframework+jenkins实现web自动化持续集成
在Docker环境使headless实现web自动化持续集成
一、制作镜像
原则:自动化测试基于基础制作镜像
命令:docker run --privileged --name=$1 --net=host -it -v ~:/share zxxxxx-xxxx-snapshot-docker.com.cn/robotframework:2.7.14 bash
修改name为你容器名字,如:name=qinjiaxi
二、配置服务器(单板)SSL证书认证
1、跳转到单板服务器ssl目录
命令:cd /share/ZXxxxx-xxx-xxx/xxx/power/etc/lighttpd/ssl/server
2、修改权限
命令:chmod 755 certmaker.sh
3、运行shell脚本
命令:sh certmaker.sh -i BoardIP
此时的BoardIP是你单板服务器的IP
4、将生成的lighttpd.crt和lighttpd.pem拷贝到单板的/power/etc/lighttpd/ssl/目录下
三、docker下安装chromedriver
1、首先将chromedriver_linux64.zip挂载到/share目录下
2、在share下解压chromedriver_linux64.zip包
命令:unzip chromedriver_linux64.zip
注意事项:由于基于测试的镜像制造的容器是比较基础的,里面比较干净很多软件和包没有安装,在操作时出现command not found属于正常,需要安装相关的包(在安装包前先更新更新安装软件)
前置条件:可以先安装sudo
命令:apt install sudo
有关sudo命令的相关知识自行百度这里不再赘述,只需要知道sudo是一个系统管理指令,允许系统管理员让普通用户可以执行一些或者全部的root命令的一个工具
a、检查默认已安装的软件包(首先检查然后更新,再进行其他操作)
命令:sudo apt update
注:此命令只检查已安装的软件包是否有可用的更新,给出汇总报告,不进行更新
b、更新安装软件
命令:sudo apt upgrade
c、安装其他包
命令:sudo apt install [packagename]
3、移动chromedriver文件
命令:sudo mv -f /share/chromedriver /usr/local/share/chromedriver
4、创建软连接
命令:sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
5、创建软连接
命令:sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
6、检查安装是否成功
命令:chromedriver -v
查看到如上的信息表示驱动安装成功
注:在安装过程中会出现各种各样的坑,大部分原因都是由于依赖包的问题导致的,下面简单的介绍几个
安装chromedriver不成功
按照上续安装驱动的步骤来完成chromedriver驱动的安装,也有可能会出现以下安装不成功的报错:
问题分析:出现以上报错的原因是因为chromedriver依赖于libgconf2-4包,所以需要安装此包方能解决问题。
命令:sudo apt install libgconf2-4
如上运行安装命令后,又会出现新的问题,命令行里面提示我们需要强制执行apt-get -f install,执行完后再次运行安装依赖包命令sudo apt install libgconf2-4,最后查看chromedriver版本,看看是否安装成功:
四、docker下安装google-chrome-stable
进入docker根目录下运行以下命令
命令:dpkg -i /share/google-chrome-stable_current_amd64.deb
若以上方法安装失败,按提示安装依赖包,由于逐个安装依赖包比较繁琐,现提供以下简单粗暴方法:
1、修复损坏包
命令:sudo apt-get -f install
2、更新软件源中的所有软件列表
命令:apt-get update
3、更新软件
命令:apt-get upgrade
4、安装google-chrome-stable的deb格式包
命令:dpkg -i /share/google-chrome-stable_current_amd64.deb
注:安装google-chrome-stable的时候也出现过一些情况导致安装不成功,下面进行分享,以免后续需要搭建环境的同事重蹈覆辙。
启动google-chrome报错:
原因:由于google默认要求不能用root用户启动,因此需要换成普通用户
五、配置google-chrome的启动为无沙箱模式
1、确保以下路径存在
路径:/usr/bin/google-chrome
2、查看google-chrome位置
命令:whereis google-chrome
3、启用vim编辑器修改内容
命令:vim /usr/bin/google-chrome
将文末exec -a "$0" "$HERE/chrome" "$@"改为
exec -a "$0" "$HERE/chrome" "$@" --user-data-dir --no-sandbox
六、导入客户端SSL证书到信任列表
1、安装libnss3-tools工具
命令:apt-get install libnss3-tools
2、将平台的enery.crt加入到.pki/nssdb中
a、复制enery.crt文件到ca证书目录下
命令:cp /share/ZXxxxx-xxxx/xxxx/power/etc/lighttpd/ssl/client/energy.crt /usr/local/share/ca-certificates/
b、添加证书到密钥库
命令:keytool -import -keystore ca-certificates -file /usr/local/share/ca-certificates/energy.crt
c、导入ca证书
命令:certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "energy" -i /usr/local/share/ca-certificates/energy.crt
在生成证书的时候出现以下问题:
certutil: function failed: security library: bad database.
原因是数据库损坏需要重新建,可执行以下命令解决:
1、在家目录创建.pki/nssdb文件夹
命令:mkdir -p ~/.pki/nssdb
2、修改目录权限
命令:chmod 755 ~/.pki/nssdb
3、生成安全数据库文件
命令:certutil -d sql:$HOME/.pki/nssdb -N
4、列出指定目录下的所有证书
命令:certutil -d sql:$HOME/.pki/nssdb -L
如看到以下信息证明安全数据库建立成功:
5、完成第五步后可以执行导入ca证书命令了
注意:
修改hosts配置信息,打开本地localhost
命令:vim /etc/hosts
七、软件版本信息
1、Robotframeworks
requests (2.18.3)
robotframework (3.0.2)
robotframework-requests (0.4.7)
robotframework-selenium2library (1.8.0)
等一系列的自动化测试相关的环境
2、Chrome for linux
headless chrome=63.0.3239.84(google-chrome-stable_current_63.0.3239.84_amd64)
chromedriver=2.34.522913(chromedriver_linux64_2.34.zip)
八、执行测试
由于采用的是chrome headless无头web自动化测试,因此我们在写测试用例的时候需要注意以下事项:
1、selenium2Library库的openbrowser打开浏览器不能直接使用
2、使用options设置参数单独创建headless浏览器,才能实现无头web测试
采用pybot命令执行测试用例
连接服务器,进入docker容器,使用pybot命令来运行挂载盘中的web自动化测试用例:
命令:pybot -d ./share/headlesstest/TMP -v BOARD_IP:10.112.33.28 -v LANGUAGE:zh_CN.UTF-8 --include web ./share/headlesstest/first_test/test_suite.txt
docker+headless+robotframework+jenkins实现web自动化持续集成的更多相关文章
- Jenkins+Jmeter+Ant自动化持续集成环境搭建
[前言] 今天让我们先把准备工作做好 >> 搭建环境! [正文] JDK+Jmeter安装教程: 参考博客:https://www.cnblogs.com/baoziluo/p/79056 ...
- Docker 从入门到放弃(四)Docker+Jenkins_自动化持续集成
Windows 查看密码 $ cat /var/jenkins_home/secrets/initialAdminPassword 14e14c414f41481aa5955753d3f31f9f 自 ...
- Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)
这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...
- 自动化持续集成Jenkins
自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...
- mac 部署安装接口自动化持续集成 jmeter+ant+jenkins
由于前段时间刚换的工作,公司用的是mac电脑办公,之前办公都是windows系统.刚开始使用时连基本的操作都要去找度娘,很不习惯,新电脑开始就是安装相关的工作工具 下面就说说遇到的哪些坑. 1. m ...
- Docker+Jenkins+Maven+SVN搭建持续集成环境
Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...
- Selenium+Python+jenkins搭建web自动化测测试框架
python-3.6.2 chrome 59.0.3071.115 chromedriver 2.9 安装python https://www.python.org/downloads/ (Wind ...
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...
- Jenkins Jenkins结合GIT Maven持续集成环境配置
Jenkins结合GIT Maven持续集成环境配置 by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...
随机推荐
- 尤雨溪在直播中讲到的Vue3.0 Beta的那些特性,快记笔记了
前言 在那天风雨交加的夜晚,Vue的创作者尤雨溪尤大大在b站直播分享了Vue.js 3.0 Beta最新进展.我对直播的内容进行了一下整理.整整用了三天的空余时间赶上了 1. 全新文档RFCs Vue ...
- python模块一键安装
利用bat文件 在不懂电脑的小白电脑上一键安装你python环境所需要的模块(你想让她一个个安装,你会疯的) 先新建一个txt文件,把你需要安装的模块和版本号写进去: 然后再新建一个txt文件 然后把 ...
- tp5--模型关联
来源于:https://blog.csdn.net/u012600104/article/details/78927629 先说明,模型关联和join管理是不一样的,用文章和评论的关系来举例.(一对多 ...
- [函数] PHP取二进制文件头快速判断文件类型
一般我们都是按照文件扩展名来判断文件类型,但其实不太靠谱,因为可以通过修改扩展名来伪装文件类型.其实我们可以通过读取文件信息来识别,比如 PHP扩展中提供了类似 exif_imagetype 这样的函 ...
- Xtrabackup全量 增量备份详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...
- 从Webpack源码探究打包流程,萌新也能看懂~
简介 上一篇讲述了如何理解tapable这个钩子机制,因为这个是webpack程序的灵魂.虽然钩子机制很灵活,而然却变成了我们读懂webpack道路上的阻碍.每当webpack运行起来的时候,我的心态 ...
- Mark一篇介绍Java垃圾回收和JVM参数设置的文章
贴出原文连接:重磅!Java 内存管理白皮书,读完它,java 内存管理的问题完全 NO Problem! 读了一遍,对并行的垃圾回收还不是很理解,先mark,消化消化再学习. 文章说的一些JVM设置 ...
- 数据开源工具:Hadoop为企业带来什么?
熟悉大数据的人一定不会对大名鼎鼎的Hadoop工具陌生,Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.Hadoop的框架最核 ...
- opencv-11-中值滤波及自适应中值滤波
开始之前 在上一篇我们实现了读取噪声图像, 然后 进行三种形式的均值滤波得到结果, 由于我们自己写的均值滤波未作边缘处理, 所以效果有一定的下降, 但是总体来说, 我们得到的结果能够说明我们的算法执行 ...
- How to get binary string from ArrayBuffer?
https://stackoverflow.com/questions/16363419/how-to-get-binary-string-from-arraybuffer https://stack ...