vlambda博客
学习文章列表

UI自动化怎么上Docker

温馨提示:读完本文大约需要 5分钟。

这是一篇技术类文章,需要对selenium、Docker有一定的了解。

本文章提到的UI自动化主要是PC浏览器方向。

我遇到的问题

最近在搞UI自动化,主要是基于PC浏览器方向,使用的主流浏览器是google、firefox。

自动化脚本已经写好了,但是要怎么运行,犯了愁。

解决思路

如果把脚本 clone到本地,在本地电脑上进行运行,那么本地环境会存在各种不确定的因素,另外还要占用本地电脑的使用时间,在自动化运行过程中是干不了其他事情的。

如果申请一台专门搞自动化的电脑,倒也是个办法,但是电脑要时刻处于开机状态,时刻充电。windows电脑时不时来个死机、重启、蓝屏,就 芭比Q了。

那么有没有什么办法,可以在服务端服务器上部署一个浏览器客户端,然后远程调用来访问呢?

探索

需要用到的 Docker镜像:

  • selenium/hub

  • selenium/node-chrome

1、 拉取镜像:

 
   
   
 
  1. # 拉取镜像 selenium/hub

  2. docker pull selenium/hub:3.141.59

  3. # 拉取镜像 selenium/node-chrome

  4. docker pull selenium/node-chrome:3.141.59

  5. # 拉取镜像 selenium/node-chrome-debug

  6. # debug模式的镜像可以远程看到执行过程

  7. docker pull selenium/node-chrome-debug:3.141.59

2、运行镜像:

1、首先运行hub

 
   
   
 
  1. 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

 
   
   
 
  1. curl http://127.0.0.1:5001

浏览器中访问:http://<your ip>:5001/grid/console,可以查看hub的运行状态。

3、运行 node-chrome,推荐使用debug模式调试,可以查看运行过程

 
   
   
 
  1. 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。

 
   
   
 
  1. from selenium import webdriver

  2. driver = webdriver.Remote(

  3.  command_executor="http://<your ip>:5001/wd/hub",

  4.  desired_capabilities=DesiredCapabilities.CHROME,

  5.  options=options,

  6. )

5、使用 vnc viewer 访问node实例,默认密码是secret

写在最后

以上就是本期的分享。如果您正在部署使用,遇到任何问题可留言。

如果您对K8S非常熟悉,那么将node-chrome做成 Service服务,理论上可以提供大量的浏览器实例,这样您就可以在测试用例非常大量的情况下使用并发来执行啦,能够提高不少生产力效率。