写在最前面
最近测试的同学找到木子,说前面他们一直在Windows下进行压测,不懂Docker,对于Docker的压测更是没有研究。既然找到木子,木子也得想办法协助处理,只能自己先研究一下,然后写一个Demo,输出给他们一个大概的流程和方案,后面就他们自己慢慢琢磨研究了。因为木子也没有玩过Selenium,所以将整个过程记录下来,希望能够帮忙到初级入门的同学,大神左转。在使用Selenium进行自动化测试时,首先需要搭建Selenium的运行环境,其中包括:安装Java、浏览器Firefox/Chrome、Selenium-standalone-server等等。这个部署过程相对来说比较复杂,而且容易出现Selenium运行环境中浏览器driver与浏览器版本不一致问题,造成在环境准备和维护上需要消耗很多时间。而采用Docker的方式部署Selenium方式,可以大大提高部署效率。
Selenium镜像分类
Selenium的镜像有很多种,如果不区分清楚各镜像的功能,会给后面的部署带来很多不必要的麻烦,所以木子这里简单列出各镜像的功能。
![55f6efd8b9095135018e778f766dd31f.png](https://img-blog.csdnimg.cn/img_convert/55f6efd8b9095135018e778f766dd31f.png)
Docker容器化压测环境部署
为了满足调试与生产两种环境下的实际使用需求,下面木子采用selenium/hub + selenium/node-chrome-debug & node-firefox-debug来进行Docker部署。
# 创建selenium hub容器docker run -d -p 4444:4444 --name selehub selenium/hub:latest# 创建chrome node容器docker run -d -p 5801:5900 --name chrome01 --link selehub:hub --shm-size=1024m selenium/node-chrome-debug:latestdocker run -d -p 5802:5900 --name chrome02 --link selehub:hub --shm-size=1024m selenium/node-chrome-debug:latest# 创建firefox node容器docker run -d -p 5901:5900 --name firefox01 --link selehub:hub --shm-size=1024m selenium/node-firefox-debug:latestdocker run -d -p 5902:5900 --name firefox02 --link selehub:hub --shm-size=1024m selenium/node-firefox-debug:latest'''参数说明:-d: 后台模式运行;--name: 容器名称;-p: 将容器的5900端口映射到Docker的5901端口,访问Docker的5901端口即可访问到node容器;--link: 用于链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量;--shm-size: docker默认的共享内存/dev/shm只有64m,有时导致chrome崩溃,该参数增加共享内存大小到1024m;'''#正常现在应该启动了5个容器~ » docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES607caf8c5e07 selenium/node-firefox-debug:latest "/opt/bin/entry_poin…" 3 seconds ago Up 2 seconds 0.0.0.0:5902->5900/tcp firefox022377af007659 selenium/node-firefox-debug:latest "/opt/bin/entry_poin…" 8 seconds ago Up 6 seconds 0.0.0.0:5901->5900/tcp firefox0187b6cf881e66 selenium/hub:latest "/opt/bin/entry_poin…" 4 days ago Up 2 hours 0.0.0.0:4444->4444/tcp selehub795a10e3ddf9 selenium/node-chrome-debug:latest "/opt/bin/entry_poin…" 5 days ago Up 2 hours 0.0.0.0:5802->5900/tcp chrome02f0a142607c48 selenium/node-chrome-debug:latest "/opt/bin/entry_poin…" 5 days ago Up 2 hours 0.0.0.0:5801->5900/tcp chrome01#我们查看其中一个node-firefox-debug日志,正常会提示注册功能。~ » docker logs firefox012020-05-12 09:52:35,650 INFO Included extra file "/etc/supervisor/conf.d/selenium-debug.conf" during parsing2020-05-12 09:52:35,650 INFO Included extra file "/etc/supervisor/conf.d/selenium.conf" during parsing2020-05-12 09:52:35,651 INFO supervisord started with pid 82020-05-12 09:52:36,655 INFO spawned: 'xvfb' with pid 112020-05-12 09:52:36,658 INFO spawned: 'fluxbox' with pid 122020-05-12 09:52:36,660 INFO spawned: 'vnc' with pid 132020-05-12 09:52:36,661 INFO spawned: 'selenium-node' with pid 142020-05-12 09:52:36,738 INFO success: xvfb entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)2020-05-1