美文网首页Web自动化测试自动化测试自动化测试
Docker+Selenium Grid构建分布式Web测试环境

Docker+Selenium Grid构建分布式Web测试环境

作者: wywincl | 来源:发表于2016-07-21 16:36 被阅读2410次

    一. 简介

    当前容器技术不断发展,越来越多的应用部署到容器上,改变了软件部署的方式。因此我们考虑利用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的截图页面。方便调试。

    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.

    简介:
    node-firefox-debug
    Docker container for creating a selenium node with Firefox, only for development.

    相关文章

      网友评论

      • 博客已迁移I米阳:IE 和 edge docker搞不了吧。
      • Ivanlfli:请问,hub的端口不是映射在主机4444端口吗?(docker run -d -p 4444:4444 --name selenium-hub selenium/hub),为什么robot代码中的remote_url的端口是32768呢?
        cooling2016:大神,请教,请问Jenkins在安装的时候,它是不是会默认安装openjdk?
        毛主席夸我帅:作者笔误了,不过这么久还没有改。。。是不打算改了吗?
      • JustinMa:俺小白一个 求教

        代码 remote_url=http://0.0.0.0:32768/wd/hub 中 0.0.0.0是firefox container的ip吗?
        wd/hub是用来指定什么的路径啊?

        期待您的回复 谢谢
        JustinMa:求教:

        这个教程要求宿主机必须是linux系统吧?
        我用的是Mac 在用Mac VNC Viewer 连接 127.0.0.1:5901 连接不上 您有遇到过类似问题吗
        JustinMa:@wywincl 非常感谢您的回答 看您写的文章受益颇丰 文章写的棒棒哒:+1:
        wywincl:@JustinMa 0.0.0.0:32768是主机端口,主机端口与容器内部的4444端口进行了映射,因此脚本实际是向容器发送command, wd/hub是Selenium Hub服务的路径,Selenium Hub负责调度Selenium Node节点。
      • amyx:期待docker-compose,docker-swarm
      • cd967dced137:robotframework里面只能指定一个浏览器,指定firefox,那么docker的node-chrome就无法被运行了。想问下怎么在robotframework中同时指定两个不同的浏览器,以便分布并行执行。pabot也有这样的疑问。。。谢谢
        毛主席夸我帅:这个需要多个hub来分发了

      本文标题:Docker+Selenium Grid构建分布式Web测试环境

      本文链接:https://www.haomeiwen.com/subject/itvbjttx.html