Selenium_Grid

Selenium Grid 工作原理

       Grid是一种分布式测试工具,整个结构由一个hub主节点和若干个node代理节点组成。 hub用来管理各个代理节点的注册和状态信息,并且接收远程客户端代码请求调用,然后把请求的命令再转发给代理代点来执行。针对验证不同的测试环境比如(操作系统、浏览器),得到不同环境下执行结果。可在主机上配置搭建多台虚拟机操作系统环境用于代理节点,在本机分发测试用例脚本至各台虚拟机代理节点运行。

        下面在同一台主机上启动一个hub主节点和两个node分支节点,如下所示:

  • 启动本机hub主机:java -jar selenium-server-standalone-2.53.0.jar -role hub [默认4444端口]
  • 启动本机node分支节点:java -jar selenium-server-standalone-2.53.0.jar -role node -port 5555         java -jar selenium-server-standalone-2.53.0.jar -role node -port 6666

可通过浏览器访问Grid控制台:http://127.0.0.1:4444/grid/console,可查看到启动节点信息:

Remote应用

       Remote作用是在配置测试用例在远程分机节点上执行,也就是相当于主机用例自动分发到远程主机执行用例,不需要copy代码过去。

下面在一台主机上启动一个hub主节点和一个node分支节点,另一台主机启动一个node分支节点如下所示:

  • 启动本机hub主机:java -jar selenium-server-standalone-2.53.0.jar -role hub [默认4444端口]
  • 启动本机node分支节点:java -jar selenium-server-standalone-2.53.0.jar -role node -port 5555        
  • 在远程主机启动node分支节点:java -jar selenium-server-standalone-2.53.0.jar -role node -port 6666 -hub http://192.168.31.210:4444/grid/register
 1 #!/usr/bin/env python
 2 # _*_ coding:utf-8 _*_
 3 __author__ = 'YinJia'
 4 
 5 
 6 from selenium.webdriver import Remote
 7 
 8 #定义主机与浏览器
 9 lists = {'http://127.0.0.1:4444/wd/hub': 'chrome',
10          'http://192.168.31.230:6666/wd/hub': 'internet explorer',
11          'http://127.0.0.1:5555/wd/hub': 'firefox'}
12 
13 #通过不同的浏览器执行脚本
14 for host, browser in lists.items():
15     print(host,browser)
16     driver = Remote(command_executor=host,
17                     desired_capabilities={'platform': 'ANY',
18                                           'browserName': browser,
19                                           'version': '',
20                                           'javascriptEnabled': True
21                                           }
22                     )
23     driver.get("http://www.baidu.com")
24     driver.find_element_by_id("kw").send_keys(browser)
25     driver.find_element_by_id("su").click()
26     driver.quit()

执行脚本,可看到远程主机192.168.31.230被执行用例。

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

原文地址:https://www.cnblogs.com/yinjia/p/9503351.html