一. 简介
当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用Docker容器技术并且结合Selenium Grid来搭建一套Web分布式测试集群。
二. 准备工作
Docker环境
首先需要在本机安装Docker环境,这里不具体介绍如何在不同系统安装Docker了。安装好Docker以后,输入docker version查看docker的版本信息验证是否安装成功。
Docker Version
Selenium相关镜像
selenium/hub
wywincl/node-firefox-debug
从docker hub上拉取新的镜像
docker pull selenium/hub
docker pull wywincl/node-firefox-debug
三. 启动容器
第一步,启动selenium-hub
docker run -d -p 4444:4444 --name selenium-hub selenium/hub
第二步,启动node-firefox-debug,注册到hub节点上
docker run -d -P -p 5901:5900 --link selenium-hub:hub wywincl/node-firefox-debug
四. 测试
执行docker ps命令,查看容器是否正常启动;
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39693a681c29 wywincl/node-firefox-debug "/opt/bin/entry_point" 24 minutes ago Up 24 minutes 0.0.0.0:5901->5900/tcp elegant_dijkstra
da8c2598666f selenium/hub "/opt/bin/entry_point" 9 days ago Up 51 minutes 0.0.0.0:32768->4444/tcp selenium-hub
运行一个基本的测试用例demo.robot,如下所示, 我们的用例是用Robot Framework编写的,具体编写方法请参考Robot Framework测试框架
*** Setting ***
Library Selenium2Library
*** Variables ***
${HOST} https://www.baidu.com
*** Test Cases ***
T_Case_1
Log Open Browser
Open Browser ${HOST} firefox remote_url=http://0.0.0.0:32768/wd/hub
Input Text id=kw Robot Framework
Click Button id=su
Capture Page Screenshot
Sleep 5s
Close Browser
*** Keywords ***
执行测试用例
robot demo.robot
我们可以通过vncviewer连接到我们的node-firefox-debug实例来查看实际运行效果。
Docker桌面显示
上面的Case,我们用了截图关键字Capture Page Screenshot, 因此我们看到在容器中的firefox的截图页面。方便调试。
Selenium-Screenshot
点击预览视频,查看实际演示效果。
通过hub-console查看节点注册情况
Selnium hub Grid Console
到此,我们完成了在Docker中构建Firefox执行实例了。后面我们会重点介绍如何利用docker-compose,docker-swarm来构建分布式Web测试集群。同时利用jenkins实现持续集成,达到Devops佳实践。
终的效果图如下:
selenium grid with docker
五. 贡献
大家应该注意到了容器中的firefox显示中文出现了部分乱码情况,由于目前还没有时间解决该问题,希望大家有空可以帮忙解决。项目地址node-firefox-debug, 欢迎大家pull request.