Docker部署UI自动化测试环境

一、分布式自动化测试要解决什么问题?

分布式自动化测试要解决什么问题? 1、减少脚本执行耗时 2、减少对单机器的资源消耗 3、实现分布式兼容性测试

分布式自动化测试实现重点: 1、控制多机器并行运行,资源监控 2、测试用例执行顺序控制 3、测试报告收集合并

纵观开源技术,拿现在最流行的seleniumdocker 来实践分布式自动化测试框架。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

二、分布式环境搭建

1、环境准备

准备一台 Linux 服务器(云服务器、自建 Linux 服务器都可以)。 在 Linux 服务器上安装 docker,docker安装就不讲了,照着官网的命令来就可以了,很简单的。

2、创建容器

利用容器技术我们可以快速的构建我们selenium hub和node 环境,其实selenium官网已经为我们制作好了镜像,我们只需要在docker环境中拉取即可,以下为selenium官网为我们提供的镜像名称

拉取hub镜像 拉取chrome浏览器镜像 拉取firefox浏览器镜像

sudo docker pull selenium/hub
sudo docker pull selenium/node-chrome
sudo docker pull selenium/node-firefox

3、启动容器

启动hub节点的docker

-d:后台运行容器 -p:5442-5444:4442-4444:端口号一一映射,其中4444为web服务 5442,5443:node节点与hub节点用例通信的
docker run --name hub -d -p 5442-5444:4442-4444 selenium/hub
-p:5902:5900:作用是访问浏览器的图形界面 vnc 是linux的图形界面服务,远程桌面服务 -e:环境变量 SE_EVENT_BUS_HOST:指定主节点的ip地址 SE_NODE_MAX_SESSIONS=20:最多启动20个session(20个浏览器)

启动hub节点的docker

sudo docker run --name node -p 5902:5900 -d -e 
SE_EVENT_BUS_HOST=82.156.178.247 -e SE_NODE_MAX_SESSIONS=20 -e 
SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_EVENT_BUS_PUBLISH_PORT=5442 
-e SE_EVENT_BUS_SUBSCRIBE_PORT=5443 -v /dev/shm:/dev/shm selenium/node-chrome
sudo docker run --name node -p 5903:5900 -d -e 
SE_EVENT_BUS_HOST=82.156.178.247 -e SE_NODE_MAX_SESSIONS=20 -e 
SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_EVENT_BUS_PUBLISH_PORT=5442 
-e SE_EVENT_BUS_SUBSCRIBE_PORT=5443 -v /dev/shm:/dev/shm selenium/node-firefox

4、查看容器运行状态

CONTAINER ID   IMAGE                  COMMAND                  CREATED       STATUS          PORTS                                                                                                                             NAMES
0da5ef1265e4   selenium/node-chrome   "/opt/bin/entry_poin…"   2 days ago    Up 5 minutes    0.0.0.0:5902->5900/tcp, :::5902->5900/tcp                                                                                         node
40456e0d4363   selenium/hub           "/opt/bin/entry_poin…"   2 days ago    Up 5 minutes    0.0.0.0:5442->4442/tcp, :::5442->4442/tcp, 0.0.0.0:5443->4443/tcp, :::5443->4443/tcp, 0.0.0.0:5444->4444/tcp, :::5444->4444/tcp   hub

5、查看Selenium hub 、node 启动状态

6、启动VNC Server

连接我们启动的容器IP:PORT,密码默认为sercet

到此,我们自动化测试的运行环境已经配置完毕,接下来看我们自动化测试脚本如何设计

7、测试脚本

from selenium import webdriver

import time

# 配置信息
from selenium.webdriver.common.by import By

ds = {
          
   
    platform: ANY,  # 平台(操作系统)信息
    browserName: chrome,  # 配置浏览器信息,谷歌浏览器
    version: ,
    javascriptEnabled: True

}

driver = webdriver.Remote(http://82.156.178.247:5444, desired_capabilities=ds)

driver.get(http://www.baidu.com)

driver.find_element(By.XPATH, //*[@id="kw"]).send_keys("中国")
driver.find_element(By.XPATH, //*[@id="su"]).click()
time.sleep(3)

driver.quit()
经验分享 程序员 微信小程序 职场和发展