在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自动化持续集成的更多相关文章

  1. Jenkins+Jmeter+Ant自动化持续集成环境搭建

    [前言] 今天让我们先把准备工作做好 >> 搭建环境! [正文] JDK+Jmeter安装教程: 参考博客:https://www.cnblogs.com/baoziluo/p/79056 ...

  2. Docker 从入门到放弃(四)Docker+Jenkins_自动化持续集成

    Windows 查看密码 $ cat /var/jenkins_home/secrets/initialAdminPassword 14e14c414f41481aa5955753d3f31f9f 自 ...

  3. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  4. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...

  5. mac 部署安装接口自动化持续集成 jmeter+ant+jenkins

    由于前段时间刚换的工作,公司用的是mac电脑办公,之前办公都是windows系统.刚开始使用时连基本的操作都要去找度娘,很不习惯,新电脑开始就是安装相关的工作工具 下面就说说遇到的哪些坑. 1.  m ...

  6. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  7. Selenium+Python+jenkins搭建web自动化测测试框架

    python-3.6.2 chrome 59.0.3071.115 chromedriver 2.9 安装python https://www.python.org/downloads/  (Wind ...

  8. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

  9. Jenkins Jenkins结合GIT Maven持续集成环境配置

    Jenkins结合GIT Maven持续集成环境配置   by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...

随机推荐

  1. ajax 报0错误

    本以为在本地测试不会跨越,结果检查下来就是跨域的问题!!!! 来源:https://www.cnblogs.com/xiezn/p/5651093.html PHP Ajax 跨域问题最佳解决方案   ...

  2. elementaryos5安装mysql5.7、php7.2、nginx1.14.0

    一.mysql5.7 安装mysql5.7: sudo apt-get install mysql-server-5.7 查看安装的mysql版本: mysql -V 5.7版本mysql安装过程中以 ...

  3. php获取远程文件内容的函数

    一个简单的php获取远程文件内容的函数代码,兼容性强.直接调用就可以轻松获取远程文件的内容,使用这个函数也可获取图片.代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  4. MySQL 入门(1):查询和更新的内部实现

    摘要 在MySQL中,简单的CURD是很容易上手的. 但是,理解CURD的背后发生了什么,却是一件特别困难的事情. 在这一篇的内容中,我将简单介绍一下MySQL的架构是什么样的,分别有什么样的功能.然 ...

  5. 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!

    基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest    ②unittest demo 中 包含 web.api 自动化测试框架 ...

  6. Android Studio快捷键动态演示

    Android Studio出来很久了,大部分已经转过来了,相对于Eclipse又是毋庸置疑,更好的使用快捷键必定达到事半功倍的效果. 友情提示:某些电脑按F1-F12键需要先按住FN,比如我的Mac ...

  7. echarts自定义tooltip显示

    使用echarts展示图形的时候,鼠标滑倒图像上,想展示除了系列名,数据名,数据值以外的数据,这时需要使用tooltip的fommater方式进行配置,另外对数据格式也有一定的要求. 如图所示:如果想 ...

  8. Fibonacci Sequence

    0 递归 斐波那契数列定义: $F(n)=\left\{\begin{matrix}0, & n=0\\ 1, & n=1\\ F(n-1)+F(n-2), & n>1\ ...

  9. 数学--数论--HDU 5382 GCD?LCM?(详细推导,不懂打我)

    Describtion First we define: (1) lcm(a,b), the least common multiple of two integers a and b, is the ...

  10. 图论--2-SAT--详解

    问题描述: 现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0.A[x] OR A[y] OR A[z]=1等,要确定A[0..N-1]的值,使得其满足所有限制关系. ...