zoukankan      html  css  js  c++  java
  • Selenium Docker 分布式搭建

    Selenium 系列篇(八):Docker 分布式搭建

    星安果 AirPython 5月21日

    点击上方“AirPython”,选择“加为星标

    第一时间关注 Python 技术干货!

     

    1. 前言

    上篇文章 提到可以利用 Selenium Grid 搭建分布式自动化测试环境

    由于 Docker 可以高效地利用系统资源,提供一致性运行环境,不需要额外配置,更加方便进行持续集成和持续交付等优势

    所以,在实际项目中,一般会采用 Docker 容器来搭建分布式环境

    2.下载镜像

    首先,在服务器下载安装 Docker CE 免费版本,并配置加速镜像源,然后重启 Docker 应用

    # 编辑文件,输入镜像加速地址
    sudo vi /etc/docker/daemon.json

    # 输入地址
    # Docker中国官方镜像加速
    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    # 重启docker
    systemctl restart docker

    接着,使用 docker pull 命令下载下面 3 个镜像到本地:

    1、selenium/hub:主节点镜像 hub

    2、selenium/node-chrome:node 节点

    3、selenium/node-chrome-debug:带有 VNC 服务端,便于观看执行步骤

    # 主hub
    docker pull selenium/hub

    # node节点
    docker pull selenium/node-chrome

    # selenium/node-chrome-debug VNC Server
    docker pull selenium/node-chrome-debug

    3.运行容器

    使用 docker run 命令,可以直接通过镜像创建一个容器并运行起来

    首先,创建并启动 1 个主 hub 容器,并使用 --name 参数进行重命名

    # 主hub
    # -P:将容器端口映射到docker主机的一个随机端口上
    # --name:重命名,便于管理
    docker run -d -P --name hub_xag selenium/hub

    然后,创建并启动 1 个 Chrome node 节点容器,并使用 -p 参数,将容器的  5900 端口映射到主机的 5903 端口

    # node节点
    # --link:关联到hub主节点
    docker run -d -p 5903:5900 --link hub_xag:hub --name node1 selenium/node-chrome

    最后,创建一个 chrome-debug 容器,并将端口映射到主机的 5900 端口上

    # chrome-debug容器
    docker run -d -p 5900:5900 --link hub_xag:hub selenium/node-chrome-debug

    使用 docker ps -a 命令即可以查看容器的运行状态及端口映射情况

    需要注意的是,如果是部署在服务器,需要配置服务器防火墙和安全组规则

    4.查看节点及启动 VNC

    使用 Chrome 打开通过 Docker 主机 IP + Hub 主节点映射的端口号组成的 URL

    比如:http://139.199.xx.xx/grid/console

    可以很直观地看到当前 Hub 主节点下所有注册的 Node 节点列表

    然后,在本机上下载安装  VNC Viewer,打开客户端软件

    输入 Docker 主机 IP + chrome-debug 映射在 Docker 主机的端口号,就可以实时查看 Docker 主机的运行情况

    比如:http://139.199.xx.xx:5900    

    需要注意的是,第一次登陆默认的密码是:secret

    5.编写脚本并运行

    随手编写一段脚本,将 command_executor 参数中的地址设置为上面 Hub 主节点 IP 地址

    from selenium import webdriver

    driver = webdriver.Remote(
    command_executor='http://139.199.xx.xx:32768/wd/hub',
    desired_capabilities={'browserName''chrome'}
    )

    driver.get('https://www.baidu.com')

    driver.find_element_by_id("kw").send_keys("欢迎关注公众号:AirPython")
    driver.find_element_by_id("su").click()

    print(driver.page_source)

    运行脚本,可以发现 VNC Viewer 会展示完整的自动化过程。

    6.最后

    实际项目中,可以下载 selenium/node-firefox-debug 镜像,通过镜像开启多个容器节点,只要保证端口号不冲突即可。

    如此,结合 Docker,Selenium Grid 可以非常方便地创建、管理分布式自动化测试环境。

    如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

     

    留言送书
    今日赠书:《Python入门到人工智能实战》PS:最近当当有满 100 减 50 的活动
     

     

    推荐阅读

     

    用 Python 分析微信群聊记录,是怎样一种体验?

    只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公

    为了追到小姐姐,我用 Python 制作了一个机器人

     

     

  • 相关阅读:
    queued frame 造成图形性能卡顿
    用python制作全国身份证号验证及查询系统
    使用 Scrapy 爬取去哪儿网景区信息
    Python 分析电影《南方车站的聚会》
    Python使用openpyxl操作excel表格
    Python爬虫实战:批量下载网站图片
    Python爬虫实战:爬取腾讯视频的评论
    用python重新定义【2019十大网络流行语】
    Python-根据照片信息获取用户详细信息(微信发原图或泄露位置信息)
    利用Python写一个抽奖程序,解密游戏内抽奖的秘密
  • 原文地址:https://www.cnblogs.com/du-jun/p/13685477.html
Copyright © 2011-2022 走看看