测试|selenium-grid AND docker化方案

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化方案】测试|selenium-grid AND docker化方案
文章图片

    推荐阅读