天天看点

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

一. 简介

当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用Docker容器技术并且结合Selenium Grid来搭建一套Web分布式测试集群。

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

Docker

二. 准备工作

Docker环境

首先需要在本机安装Docker环境,这里就不具体介绍如何在不同系统安装Docker了。安装好Docker以后,输入docker version查看docker的版本信息验证是否安装成功。

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

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
           
https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3
Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献
https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3 效果 https://link.jianshu.com?t=https://asciinema.org/a/butc6ldex3by09b0m4l4g37s3
Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

Robot Test Results

我们可以通过vncviewer连接到我们的node-firefox-debug实例来查看实际运行效果。

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

vncviewer

Docker桌面显示

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

Firefox IN Docker

上面的Case,我们用了截图关键字

Capture Page Screenshot

, 因此我们看到在容器中的firefox的截图页面。方便调试。

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

Selenium-Screenshot

点击

预览视频

,查看实际演示效果。

通过hub-console查看节点注册情况

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

Selnium hub Grid Console

到此,我们就完成了在Docker中构建Firefox执行实例了。后面我们会重点介绍如何利用docker-compose,docker-swarm来构建分布式Web测试集群。同时利用jenkins实现持续集成,达到Devops最佳实践。

最终的效果图如下:

Docker+Selenium Grid构建分布式Web测试环境一. 简介二. 准备工作三. 启动容器四. 测试五. 贡献

selenium grid with docker

五. 贡献

大家应该注意到了容器中的firefox显示中文出现了部分乱码情况,由于目前还没有时间解决该问题,希望大家有空可以帮忙解决。项目地址

node-firefox-debug

, 欢迎大家pull request.

简介:

Docker container for creating a selenium node with Firefox, only for development.

https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug https://link.jianshu.com?t=http://microbadger.com/images/wywincl/node-firefox-debug