zoukankan      html  css  js  c++  java
  • docker+selenium搭建分布式web自动化测试环境

    什么是Selenium Grid

    Selenium Grid是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。
    Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍,因为Selenium团队已经逐渐遗弃老版本了。
    Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念 --一个 master/hub 和多个 基于master/hub注册的子节点 slaves/nodes。当我们在master上基于不同的浏览器/系统运行测试用例时,master将会分发给适当的node运行。

    什么时候用Selenium Grid

    • 同时在不同的浏览器、操作系统和机器上运行测试。最大程度用于兼容性测试
    • 减少运行时间

    怎样启动Selenium Grid

    1. 命令行启动

    将会使用2台机器,一台运行hub另一台运行node

    1、安装并运行selenium/hub:

    docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
    

    2、安装并运行selenium/node-chrome-debug

    docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
    

    在浏览器中打开hub地址 http://127.0.0.1:5001/grid/console ,会展示已经挂载到hub上的node节点

    如果hub节点和node节点在同一服务器上可以用 --link参数指定hub即可,若hub与node不在同一节点,则需要另加HUB_PORT_4444_TCP_ADDR和HUB_PORT_4444_TCP_PORT参数

    docker run --name=chrome2 -p 5903:5900 -e HUB_PORT_4444_TCP_ADDR=shifeng.online -e HUB_PORT_4444_TCP_PORT=5001 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm -d selenium/node-chrome-debug:3.7.1-beryllium --restart 
    

    --restart 参数会在容器异常时重启,比如hub被压挂了等,在搭建重要项目是都是加上该参数
    打开远程hub地址

    3、安装VNC远程浏览器环境

    debug结尾的镜像都带有VNC服务端,本机安装VNC客户端,即可远程连接。
    下载地址:https://www.realvnc.com/en/connect/download/viewer/
    输入远程地址:127.0.0.1:5902
    密码:secret
    测试代码

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    """
    @author:chenshifeng
    @file:test_grid.py
    @time:2020/12/26
    """
    import time
    from selenium import webdriver
    from selenium.webdriver import TouchActions
    
    class TestGrid:
        def setup_method(self):
            self.driver = webdriver.Remote('http://127.0.0.1:5001/wd/hub')
            self.driver.maximize_window()
            self.driver.implicitly_wait(5)
    
        def teardown_method(self):
            self.driver.quit()
    
        def test_grid(self):
            self.driver.get("https://www.baidu.com/")
            el = self.driver.find_element_by_id('kw')
            el_search = self.driver.find_element_by_id('su')
            el.send_keys('selenium测试')
            action = TouchActions(self.driver)
            action.tap(el_search)  # 点击
            action.perform()
            action.scroll_from_element(el, 0, 10000).perform()
            time.sleep(5)
    
    

    运行结果截图

  • 相关阅读:
    第6次实践作业
    第5次实践作业
    第4次实践作业
    第3次实践作业
    第二次实践作业
    2020系统综合实践 第1次实践作业
    软工实践个人总结
    第11组 Beta版本演示
    第11组 Beta冲刺(4/5)
    第11组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/feng0815/p/14192660.html
Copyright © 2011-2022 走看看