Selenium Grid3 简介

Selenium grid 目前版本3.9.1 下载地址:http://selenium-release.storage.googleapis.com/index.html
Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员经常要测试多浏览器的兼容性,那就可以用到grid了。下面就来介绍如何在多个浏览器上运行同一份脚本。

它的工作原理是,Grid分布式测试由一个主节点hub和若干个node代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且连接远程客户端的代码请求,然后再将请求的命令转发到代理节点执行。使用Grid远程执行测试代码与直接调用Selenium Server是一样的,只是环境启动的方式不一样,需同时启动一个hub和至少一个node。

  • 1 在本地执行,启动一个hub和两个node,启动hub之后,再打开一个cmd执行node
    java -jar selenium-server-standalone-xxx.jar -role hub - port 4444(hub默认端口号为4444)
    java -jar selenium-server-standalone-xxx.jar -role node - port 5555(node默认端口号5555)
    java -jar selenium-server-standalone-xxx.jar -role node - port 5556
    Selenium Grid3 简介_第1张图片
    若指定hub分配,执行顺序:由端口连接先后,一个线程一次一个端口,轮流执行,轮流完毕又从头开始。
    通过浏览器打开http://127.0.0.1:4444/grid/console/访问Grid的控制台,可以查看启动受控的节点node信息。
    Selenium Grid3 简介_第2张图片
    通过remote执行
import selenium
from selenium.webdriver import Remote

# 定义主机与浏览,放在字典里面
lists = {
    "http://127.0.0.1:4444/wd/hub":"chrome",
    "http://127.0.0.1:5555/wd/hub": "firefox",
     "http://127.0.0.1:5556/wd/hub": "internet explore"
}
#通过不同的浏览器执行脚本
for host, browser in lists.items():
    print(host,browser)
    driver = Remote(command_executor=host,
                    desired_capabilities={ 'platform':'ANY',
                                           'browserName':'',
                                           'version':'',
                                           'javascriptEnable':True
                                        }
                    )
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys(browser)
    driver.find_element_by_id("su").click()
    driver.close()

该文件定义了一个方法,该方法存放了一个字典,分别给本机分配了2个不同的端口并指定了不同的浏览器。

最后我们运行测试脚本,可以看到三个浏览器运行结果

我们目前启动的hub 与node 都是在一台主机上。那么要在其它主机启动node 必须满足以下几个要求:

  • 本地hub 主机与远程node 主机之间可以相互ping 通。
  • 远程主机必须安装运行脚本的运行环境(Python 、Selenium、浏览器及浏览器驱动)。
  • 远程主机必须安装java 环境,因为需要运行SeleniumServer。

WebDriver 所支持的驱动:
这里写图片描述

你可能感兴趣的:(test)