zoukankan      html  css  js  c++  java
  • Selenium 实现多机器部署分布式执行

    1、selenium-grid简介

    selenium实现多机器分布式执行,依靠的是:selenium-grid(selenium的三大组件之一)。

    selenium-grid允许用户在不同的机器上并行地针对不同的浏览器运行测试。

    selenium-grid采用的是Hub和Node模式,允许在分布式测试执行环境中运行测试。

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

    selenium Node执行。

    优点:

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

    2selenium-grid环境搭建

    2.1 下载selenium-server-standalone

    启动selenium-server-standalone是需要配置java环境

    下载地址:https://www.selenium.dev/downloads/

    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

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

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

    • 在远程主机启动node分支节点:
    java -jar selenium-server-standalone-3.141.59.0.jar -role node -port 6666 -hub http://192.168.10.25:4444/grid/register

    3、Selenium分布式实践

    from selenium.webdriver import Remote
    
    #定义主机与浏览器
    lists = {'127.0.0.1:4444': 'chrome',
             '192.168.10.171:6666': 'internet explorer',
             '127.0.0.1:5555': 'firefox'}
    
    def browser(host,br_type):
        """
        启动浏览器驱动
        :return: 返回浏览器驱动URL
        """
        try:
            driver = Remote(command_executor='http://' + host + '/wd/hub',
                            desired_capabilities={ 'platform': 'ANY',
                                                   'browserName': br_type,
                                                   'version': "",
                                                   'javascriptEnabled': True
                                                }
                            )
            return driver
        except Exception as msg:
            print("驱动异常-> {0}".format(msg))
    
    if __name__ == '__main__':
        for host, br_type in lists.items():
            print(host,br_type)
            driver = browser(host,br_type)
            driver.get("https://www.baidu.com")
            driver.find_element_by_id("kw").send_keys("test selenium")
            driver.find_element_by_id("su").click()
            driver.quit()

    执行脚本,可看到本机会在chrome和firefox浏览器执行,并且在远程主机192.168.10.171也会执行

     另:通过VisGrid工具来启动和管理节点,如下图所示:

    VisGrid工具 下载地址:

    java -jar visgrid-1.24.jar

     

  • 相关阅读:
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
    219. Contains Duplicate II
    217. Contains Duplicate
    135. Candy
  • 原文地址:https://www.cnblogs.com/watery/p/13885437.html
Copyright © 2011-2022 走看看