一. 简介
当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用Docker容器技术并且结合Selenium Grid来搭建一套Web分布式测试集群。
Docker二. 准备工作
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:4444/wd/hub
Input Text id=kw Robot Framework
Click Button id=su
Capture Page Screenshot
Sleep 5s
Close Browser
*** Keywords ***
执行测试用例
robot demo.robot
效果
Robot Test Results
我们可以通过vncviewer连接到我们的node-firefox-debug实例来查看实际运行效果。
vncviewer
Docker桌面显示
Firefox IN Docker
上面的Case,我们用了截图关键字Capture Page Screenshot
, 因此我们看到在容器中的firefox的截图页面。方便调试。
点击预览视频,查看实际演示效果。
通过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.
简介:
node-firefox-debug
Docker container for creating a selenium node with Firefox, only for development.
网友评论
代码 remote_url=http://0.0.0.0:32768/wd/hub 中 0.0.0.0是firefox container的ip吗?
wd/hub是用来指定什么的路径啊?
期待您的回复 谢谢
这个教程要求宿主机必须是linux系统吧?
我用的是Mac 在用Mac VNC Viewer 连接 127.0.0.1:5901 连接不上 您有遇到过类似问题吗