selenium-grid AND docker化方案

来源:互联网 发布:王者 女娲 知乎 编辑:程序博客网 时间:2024/06/03 21:57

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 @1080ms11: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 running11: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 hub11: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/register11: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 seleniumNAME                                DESCRIPTION           STARS          selenium/hub                                              219                                selenium/node-chrome                                      122selenium/standalone-chrome                                90      selenium/node-firefox                                     85                         selenium/standalone-firefox                               69       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 imagesREPOSITORY              TAG                 IMAGE ID            CREATED             SIZEselenium/node-firefox   latest              902986a504e2        2 weeks ago         683MBselenium/node-chrome    latest              1e39200c6581        2 weeks ago         917MBselenium/hub            latest              cc632782ed23        2 weeks ago         297MB $ 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/hosts127.0.0.1   localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters14.25.13.11 list.a.com14.25.13.11 list.b.hk172.17.0.2  hub c8b153e994b4 selehub172.17.0.4  e0a2b085d5e9

驱动selenium代码

根据PageObject 设计模式,封装了常用功能。感兴趣可以参考:

http://blog.csdn.net/kittyboy0001/article/details/25219053

http://blog.csdn.net/column/details/seleniumframe.html

docker化方案