UI自动化怎么上Docker
温馨提示:读完本文大约需要 5分钟。
这是一篇技术类文章,需要对selenium、Docker有一定的了解。
本文章提到的UI自动化主要是PC浏览器方向。
我遇到的问题
最近在搞UI自动化,主要是基于PC浏览器方向,使用的主流浏览器是google、firefox。
自动化脚本已经写好了,但是要怎么运行,犯了愁。
解决思路
如果把脚本 clone
到本地,在本地电脑上进行运行,那么本地环境会存在各种不确定的因素,另外还要占用本地电脑的使用时间,在自动化运行过程中是干不了其他事情的。
如果申请一台专门搞自动化的电脑,倒也是个办法,但是电脑要时刻处于开机状态,时刻充电。windows电脑时不时来个死机、重启、蓝屏,就 芭比Q
了。
那么有没有什么办法,可以在服务端服务器上部署一个浏览器客户端,然后远程调用来访问呢?
探索
需要用到的 Docker
镜像:
selenium/hub
selenium/node-chrome
1、 拉取镜像:
# 拉取镜像 selenium/hub
docker pull selenium/hub:3.141.59
# 拉取镜像 selenium/node-chrome
docker pull selenium/node-chrome:3.141.59
# 拉取镜像 selenium/node-chrome-debug
# debug模式的镜像可以远程看到执行过程
docker pull selenium/node-chrome-debug:3.141.59
2、运行镜像:
1、首先运行hub
docker run --name=selenium-hub -p 5001:4444 -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.141.59
curl http://127.0.0.1:5001
浏览器中访问:http://<your ip>:5001/grid/console
,可以查看hub的运行状态。
3、运行 node-chrome,推荐使用debug模式调试,可以查看运行过程
docker run --name=chrome-debug5903 -p 5903:5900 -e NODE_MAX_INSTANCES=10 -e NODE_MAX_SESSION=10 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link selenium-hub:hub -d selenium/node-chrome-debug:3.141.59
请注意:
hub版本和node的版本必须一致,不然会出现node节点无法注册到hub。
from selenium import webdriver
driver = webdriver.Remote(
command_executor="http://<your ip>:5001/wd/hub",
desired_capabilities=DesiredCapabilities.CHROME,
options=options,
)
5、使用 vnc viewer
访问node实例,默认密码是secret
写在最后
以上就是本期的分享。如果您正在部署使用,遇到任何问题可留言。
如果您对K8S非常熟悉,那么将node-chrome做成 Service
服务,理论上可以提供大量的浏览器实例,这样您就可以在测试用例非常大量的情况下使用并发来执行啦,能够提高不少生产力效率。