zoukankan      html  css  js  c++  java
  • 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-stabledeb格式包

    命令: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

    七、软件版本信息

    1Robotframeworks

    requests (2.18.3)

    robotframework (3.0.2)

    robotframework-requests (0.4.7)

    robotframework-selenium2library (1.8.0)

    等一系列的自动化测试相关的环境

    2Chrome for linux

    headless chrome=63.0.3239.84google-chrome-stable_current_63.0.3239.84_amd64

    chromedriver=2.34.522913chromedriver_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

     

  • 相关阅读:
    Java代码性能优化
    Kafka学习笔记(二、Kafka中的角色)
    CentOS 安装并运行Kafka
    CentOS ping name or service not known问题解决
    CentOS静态IP配置
    Kafka学习笔记(一、Kafka基础)
    sql去除中间和两边的空格
    实验二 数据更新与SQL简单查询
    实验一 完成订单数据库
    递归求P函数
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/11422590.html
Copyright © 2011-2022 走看看