一,为什么要用selenium grid进行分布式? 【使用docker搭建分布式UI自动化的解决方案】使用这种架构可以加速UI自动化的运行速度,因为UI自动化执行是比较慢的,不像接口测试执行速度快,加上可以使用testng的多线程就更快了,所以接口测试很少遇到性能瓶颈。加上UI自动化流程比较复杂,真的运行起来如果启动几百个服务器是比较耗内存的,这个时候需要加服务器才能够满足需求,但是这样有时候会存在资源分配问题。grid相当于搭建一个浏览器集群,可以当做一个通用的基础服务,这个也有负载均衡策略,可以最大化提高资源利用率
文章图片
hub:主节点,负责调度
node:从节点,负责处理请求
文章图片
二,实战 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
启动后浏览器就可以访问界面了
文章图片
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
想多注册几个也是可以的
文章图片
点击页面的console即可跳转到这个界面
文章图片
使用VNC VIEWER连接远程服务
1,登录客户端,新建连接(端口号写的node的)
文章图片
2,点击继续
文章图片
3,输入密码,默认是secret
文章图片
我们可以跑一个测试任务
文章图片
进行分布式测试
右键run
文章图片
可以看到vnc里面有3个浏览器会启动
三,补充 1,selenium gird 支持的浏览器类型
文章图片
为什么没有IE呢?docker和虚拟机的区别是什么?
- 因为IE是需要内核的,但是docker是没有内核的。
- 最大区别是docker没有内核,没有内核就等于没有操作系统,docker用的是宿主机的内核,这样的好处是快,节省了内核的消耗,不需要开机。启动虚拟机相当于重新开机,点开docker相当于启动qq。缺点是隔离性不太好。
- 一切挑内核的都不要用docker
- 如果想加入IE到grid里面,需要搭一个windows虚拟机,再到selenium官方网站下载gird,然后安装启动起来,配好java环境等
推荐阅读
- 软件测试|懵(CSDN最牛逼的docker+selenium+jenkins构建自动化测试部署+实战,把我都惊呆了)
- 接口测试|接口测试异常场景耗时耗力(一文帮你解决)
- Python|软件测试面试技巧,你都get到了么
- 测试|自动化软件测试面试常见问题(带答案)!!!内部机密!!随时会删!!!
- 软件测试|软件测试开发基础|测开中的几个工具开发实战
- 软件测试|2022年互联网寒冬,裁员消息频出,软件测试人员该如何破局()
- 软件测试|软件测试工程师的自我认识和定位
- App自动化测试环境安装
- C/C++ 单元自动化测试解决方案实践