使用docker selenium搭建分佈式UI自動化實踐(基於grid的解決方案)
自动化测试需要考虑到兼容性的时候,之前的做法是每个执行机上安装不同版本的浏览器,实际上这样做会很浪费硬件资源,现在有了docker容器化技术,让一切变得简单。
工具清单:
语言:python 3.7.9
虚拟机工作台:VM VirtualBox
虚拟机系统:Linux 2.6 / 3.x / 4.x(64-bit)
docker:Docker version 19.03.1
自动化测试软件:selenium
虚拟机连接工具:xshell
node连接器:vnc viewer
获取镜像,创建容器
分别执行下面命令,此次我们需要2个镜像(1个Hub,1个Node),同时为了可以直观的看到实验结果,决定选用自带VNC Server的debug版本
docker run -p 5555:4444 -d --name hub selenium/hub
docker run -d --name chrome -p 5900:5900 --link hub selenium/node-chrome-debug
参数解释:
1)run:使用镜像启动容器;
2)-d: 容器后台运行;
3)-p: 端口映射,5555是容器宿主机(运行docker的主机)的端口,4444是我们容器(运行selenium_hub虚拟机)的端口。我们把容器的4444端口映射给docker主机的5555端口,就可以通过docker主机的5555端口来访问selenium_hub容器了;
4)-P:这里没有用到,使用这个参数不用具体指定端口映射,会把容器默认的端口(如:selenium/hub的默认端口为4444,node为:5900)映射到docker主机的一个随机端口;
5)–link :表示新启动的 container 能通过内部网络