• selenium 实现多机器部署分布式执行


    1selenium-grid

    selenium实现多机器分布式执行,依靠的是:selenium-grid(selenium的三大组件之一)。selenium-grid允许用户在不同的机器上并行地针对不同的浏览器运行测试。selenium-grid采用的是Hub和Node模式,允许在分布式测试执行环境中运行测试。

    selenium Hub用来管理各个selenium Node的注册信息和状态信息,并且接收远程客户端代码的测试调用请求,并把请求命令发送给符合要求的selenium Node执行。

    优点:

    1. 可以减少测试的执行时间;
    2. 支持针对多个运行环境的运行—不同系统的兼容性;
    3. 支持所有场景拥有相同浏览器、类型、版本的测试—不同浏览器的兼容性。

     

    2、环境搭建

    2.1 运行环境的准备

    ***所有的Hub和Node的环境均按⤵️要求配置

    1. 下载selenium-serverhttps://www.selenium.dev/downloads/。我下载的是:selenium-server-standalone-3.141.59.jar
    2. 下载java环境,并配置java环境。Java环境分为JDK和JRE两种,JDK是面向开发者使用的SDK,它提供了java的开发环境和运行环境,JRE是java的运行环境,它面向的是java程序的使用者,而不是开发者。这里我们直接下载JDK,下载地址如下:https://www.oracle.com/technetwork/java/javase/downloads/index.html  (验证:java --version
    3. 下载浏览器驱动,chromedriverhttp://chromedriver.storage.googleapis.com/index.html。(注意与chrome浏览器的版本相匹配)

    2.2 selenium-grid搭建

    • 准备2+台机器
    • 选择其中一台机器作为Hub。在该机器上启动一个Hub和一个Node,打开两个终端分别输入:
    java -jar selenium-server-standalone-3.141.59.jar -role hub   #端口默认4444
    java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555

    # 扩展

     如果需要多个节点,改变端口增加即可。

     

    观察node节点的信息

    可以在这台计算机上访问 http://localhost:4444/grid/console

     

    • 在所有的node节点的机器的终端执行如下命令:
    java -jar selenium-server-standalone-3.141.59.jar -role node -port 8888 -hub http://hub机器的ip:4444/grid/register
    • 回到hub机器上运行自动化脚本即可,Demo代码如下:
     1 # coding = utf-8
     2 
     3 from threading import Thread
     4 from time import sleep, ctime
     5 from selenium import webdriver
     6 
     7 
     8 def test_sample(host, browser):
     9     """测试用例"""
    10     print('start:%s' % ctime())
    11     print(host, browser)
    12     dc = {'browserName': browser}
    13     driver = webdriver.Remote(command_executor=host, desired_capabilities=dc)
    14     driver.get('http://www.baidu.com')
    15     driver.find_element_by_id('kw').send_keys(browser)
    16     driver.find_element_by_id('su').click()
    17     sleep(5)
    18     driver.close()
    19 
    20 
    21 if __name__ == '__main__':
    22     lists = {'http://10.9.xxx.xx:7777/wd/hub': 'chrome1',
    23              'http://10.9.xxx.xx:5555/wd/hub': 'chrome2',
    24              'http://10.9.xxx.xx:8888/wd/hub': 'chrome',
    25              'http://10.9.xxx.xx:9999/wd/hub': 'chrome'
    26              }
    27     threads = []
    28     files = range(len(lists))
    29 
    30     # 创建线程
    31     for host, browser in lists.items():
    32         t = Thread(target=test_sample, args=(host, browser))
    33         threads.append(t)
    34 
    35     # 启动线程
    36     for i in files:
    37         threads[i].start()
    38     for i in files:
    39         threads[i].join()
    40     print('end:%s' % ctime())
  • 相关阅读:
    营山护照办理
    非北京人员 办理护照
    护照填写注意事项
    美国会议签证——我是正当理由去美国,我能支付(或有人为我支付)我在美国期间的所有费用,办完事我肯定回来, 邀请信,行程表这些材料齐全即可
    urllib2使用2
    python 异常
    python urllib和urllib2 区别
    python类继承
    gcc编译4个阶段
    Vim中如何全选并复制?
  • 原文地址:https://www.cnblogs.com/sunshine-blog/p/12882281.html
Copyright © 2020-2023  润新知