zoukankan      html  css  js  c++  java
  • Docker学习10-docker-slenium进行web自动化测试

    前言

    实际上是 docker 中部署一个 Selenium Grid,它用于分布式自动化测试,就是一套Selenium 代码可在不同的环境上运行。

    Selenium Grid 又分为:

    hub :主节点,它首先根据你的代码来识别分配到哪个node节点去运行;

    node:分支节点,由主hub主节点分配给本地/远程node来运行测试用例。

    环境准备:

    • centos
    • docker
    • python3 + selenium 等库

    一、docker-selenium搭建

    由于广深小龙不喜欢先pull一个镜像下来,我是直接run起来。

    1、docker 安装 主节点 selenium/hub:

    sudo docker run -d -p 4444:4444 -e GRID_MAX_SESSION=200 --restart=always --name hub selenium/hub

    -d:挂后台运行

    -p:映射ip

    -e:GRID_MAX_SESSION=200

    2、docker 安装 分支节点 selenium/node-chrome:

    当然还有debug版本、Firefox版本的分支节点,这里说chrome。了解更多:https://hub.docker.com/search?q=selenium%2Fnode-&type=image

    sudo docker run -d -e NODE_MAX_INSTANCES=100 -e NODE_MAX_SESSION=100 --shm-size=5g --link hub:hub --name node selenium/node-chrome

    以上步骤喝杯茶,等待一下下载完成后就会直接run起来。

    3、run起来后,输入:docker ps

    [root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                PORTS                                              NAMES
    d33303b6a7fe        selenium/hub              "/opt/bin/entry_poin…"   2 days ago          Up 2 days             0.0.0.0:4444->4444/tcp                             selenium-hub
    ff03e232af44        selenium/node-chrome      "/opt/bin/entry_poin…"   2 days ago          Up 2 days                                                                vigorous_agnesi

    可以看到这两个镜像在运行着,接下来我们调试脚本。

    二、调试脚本

    由于当时项目需求,我将脚本放置服务器上试运行。大概是:docker + docker-selenium + jenkins + python3 + pytest

    pytest的优点、插件都太多了,如分布式、前置后置,自定义顺序执行用例,漂亮报告等等

    1、测试脚本如下:

    这里需要注意更改你的服务器主机ip,端口对应主节点的映射端口。

    from selenium import webdriver
    import time
    
    driver = webdriver.Remote(
    command_executor='http://你的服务器主机ip:4444/wd/hub',
    desired_capabilities={'browserName': 'chrome'}
    )
    
    driver.get('https://www.cnblogs.com/gsxl/')
    print("get 广深小龙 博客园")
    
    text = driver.find_element_by_id("Header1_HeaderTitle").text
    driver.find_element_by_id("Header1_HeaderTitle").click()
    print(text)
    time.sleep(1)
    
    driver.quit()
    print("运行完毕,即将关闭...")

    运行结果:

    [root@iZbp19lugf22zbsubsf1y6Z ~]# python3 test.py 
    get 广深小龙 博客园
    广深-小龙 --扬帆起航!
    运行完毕,即将关闭...
    [root@iZbp19lugf22zbsubsf1y6Z ~]# 

    如果在容器外部可以使用服务器本地ip,容器内部需要使用服务器主机ip,既是公网ip。

    这样调试后我们便可以通过 jenkins 持续集成进行测试了。

    欢迎来大家QQ交流群一起学习:482713805

  • 相关阅读:
    CentOS系统下NFS服务器
    网络封包分析
    Android端抓包方法
    SQL Server 2008从基础开始学习的历程(1)------创建表与查询
    序--CentOS6.5 mini 安装和基本配置
    MonkeyRunner(猴哥快跑)常用类方法总结
    python 开源数据抓取框架scrapy
    pycharm最新版注册
    python flask下传数据到js
    centos打架django + mysql环境
  • 原文地址:https://www.cnblogs.com/gsxl/p/13233740.html
Copyright © 2011-2022 走看看