selenium-grid && docker化方案
背景 因为我们服务端维护了很多脚本,并且只有一台机器做自动化回归,加快回归的速度,发现了docker化方案,以此成文。
selenium Grid Selenium Grid 提供多系统、多浏览器的执行环境。
注册 hub
java -jar selenium-server-standalone-3.6.0.jar -role hub...
11:20:33.261:INFO:osjs.Server:main: Started @1080ms
11:20:33.263 INFO - Nodes should register to http://1.2.3.206:4444/grid/register/
11:20:33.263 INFO - Selenium Grid hub is up and running
11:21:39.756 INFO - Registered a node http://1.2.3.206:5555
注册 node
$ java -jar selenium-server-standalone-3.6.0.jar -role node -hub http://1.2.3.206:4444/grid/register/11:21:39.691 INFO - Selenium Grid node is up and ready to register to the hub
11:21:39.706 INFO - Starting auto registration thread. Will try to register every 5000 ms.
11:21:39.706 INFO - Registering the node to the hub: http://1.2.3.206:4444/grid/register
11:21:39.756 INFO - The node is registered to the hub and ready to use
之后可以开跑自动化脚本了。
docker化 参考资料: https://testerhome.com/topics/8450
selenium-docker
selenium官方其实已经支持了docker搭建镜像环境,镜像仓库地址:https://hub.docker.com/r/selenium/
构建镜像所需的Dockerfile来自Github:[https://github.com/SeleniumHQ/docker-selenium
](https://github.com/SeleniumHQ/docker-selenium
)
查找selenium 镜像
$ docker search selenium
NAMEDESCRIPTIONSTARS
selenium/hub219
selenium/node-chrome122
selenium/standalone-chrome90
selenium/node-firefox85
selenium/standalone-firefox69
selenium/node-chrome-debug
这里需要 selenium/hub 作为hub,selenium/node-chrome 或者你需要的浏览器做 node。需要说明的是,selenium/node-chrome-debug ,debug结尾的镜像都带有VNC服务端,本机安装VNC客户端,即可远程连接。
拉取镜像搭建环境
$ docker pull selenium/hub$ docker pull selenium/node-chrome$ docker pull selenium/node-firefox$ docker images
REPOSITORYTAGIMAGE IDCREATEDSIZE
selenium/node-firefoxlatest902986a504e22 weeks ago683MB
selenium/node-chromelatest1e39200c65812 weeks ago917MB
selenium/hublatestcc632782ed232 weeks ago297MB $ docker run -d -p 5911:5900 -p 5560:5555 --name cnode1 --link selehub:hub --shm-size=512m selenium/node-chrome $ docker run -d -p 5901:5900 -p 5561:5555 --name cnode2 --link selehub:hub --shm-size=512m selenium/node-chrome $ docker run -d -p 5903:5900 -p 5562:5555 --name cnode3 --link selehub:hub --shm-size=512m selenium/node-chrome $ docker run -d -p 5905:5900 -p 5563:5555 --name cnode4 --link selehub:hub --shm-size=512m selenium/node-chrome
登录 http://localhost:4444/grid/console 可以查看
预发环境绑定
$ docker run -d -p 5923:5900 -p 5553:5555 --name dcnode3 --link selehub:hub --add-host list.a.com:14.25.13.11 --add-host list.b.hk:14.25.13.11 --shm-size=512m selenium/node-chrome-debug
确认环境
$ docker exec e0a cat /etc/hosts
127.0.0.1localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
14.25.13.11 list.a.com
14.25.13.11 list.b.hk
172.17.0.2hub c8b153e994b4 selehub
172.17.0.4e0a2b085d5e9
驱动selenium代码 根据PageObject 设计模式,封装了常用功能。感兴趣可以参考:
http://blog.csdn.net/kittyboy0001/article/details/25219053
http://blog.csdn.net/column/details/seleniumframe.html
【测试|selenium-grid AND docker化方案】
文章图片
推荐阅读
- 面试|我经历的IT公司面试及离职感受(转)
- Asp.net|System.Globalization.DateTimeFormatInfo.InvariantInfo
- 测试|16年资深测试大牛教你三部成为测试架构师
- 网络|Selenium 4.0-最新的测试自动化工具
- Android|Android VideoView如何播放RTSP的流
- web技术|项目管理之如何控制项目进度和质量
- android|测量webView页面性能技术方案