使用docker搭建分布式UI自动化的解决方案

一,为什么要用selenium grid进行分布式? 【使用docker搭建分布式UI自动化的解决方案】使用这种架构可以加速UI自动化的运行速度,因为UI自动化执行是比较慢的,不像接口测试执行速度快,加上可以使用testng的多线程就更快了,所以接口测试很少遇到性能瓶颈。加上UI自动化流程比较复杂,真的运行起来如果启动几百个服务器是比较耗内存的,这个时候需要加服务器才能够满足需求,但是这样有时候会存在资源分配问题。grid相当于搭建一个浏览器集群,可以当做一个通用的基础服务,这个也有负载均衡策略,可以最大化提高资源利用率
使用docker搭建分布式UI自动化的解决方案
文章图片

hub:主节点,负责调度
node:从节点,负责处理请求
使用docker搭建分布式UI自动化的解决方案
文章图片

二,实战 1,命令行启动

# e:指定环境变量,相当于一个参数,会动态初始化容器的一个行为。就像写代码时候要传参一样 docker run -d --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

启动后浏览器就可以访问界面了
使用docker搭建分布式UI自动化的解决方案
文章图片

2,启动node节点
# 提供远程桌面的连接服务,可以进行debug服务 # NODE_MAX_SESSION=6:同时运行的浏览器数量是6 # --link:把hub和node的网络连接在一起 docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

想多注册几个也是可以的
使用docker搭建分布式UI自动化的解决方案
文章图片

点击页面的console即可跳转到这个界面
使用docker搭建分布式UI自动化的解决方案
文章图片

使用VNC VIEWER连接远程服务
1,登录客户端,新建连接(端口号写的node的)
使用docker搭建分布式UI自动化的解决方案
文章图片

2,点击继续
使用docker搭建分布式UI自动化的解决方案
文章图片

3,输入密码,默认是secret
使用docker搭建分布式UI自动化的解决方案
文章图片

我们可以跑一个测试任务
使用docker搭建分布式UI自动化的解决方案
文章图片

进行分布式测试
右键run
使用docker搭建分布式UI自动化的解决方案
文章图片

可以看到vnc里面有3个浏览器会启动
三,补充 1,selenium gird 支持的浏览器类型
使用docker搭建分布式UI自动化的解决方案
文章图片

为什么没有IE呢?docker和虚拟机的区别是什么?
  • 因为IE是需要内核的,但是docker是没有内核的。
  • 最大区别是docker没有内核,没有内核就等于没有操作系统,docker用的是宿主机的内核,这样的好处是快,节省了内核的消耗,不需要开机。启动虚拟机相当于重新开机,点开docker相当于启动qq。缺点是隔离性不太好。
  • 一切挑内核的都不要用docker
  • 如果想加入IE到grid里面,需要搭一个windows虚拟机,再到selenium官方网站下载gird,然后安装启动起来,配好java环境等

    推荐阅读