Selenium_Grid
Posted yinjia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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工具来启动和管理节点,如下图所示:
以上是关于Selenium_Grid的主要内容,如果未能解决你的问题,请参考以下文章