配置selenium grid
Posted Utee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置selenium grid相关的知识,希望对你有一定的参考价值。
1. Selenium Grid简介
2. Selenium Grid结构
3. 环境准备
3.1 JDK环境
3.2 selenium-server-standalone下载
3.3 webdriver下载
3.3.1 IE
3.3.2 Chrome
3.3.3 Firefox
driver下载完成解压后,分别拷贝IEDriverServer.exe,geckodriver.exe,chromedriver.exe至Python安装路径(如C:\\Python27\\)下即可
4. Selenium Grid启动
4.1 启动hub
java -jar selenium-server-standalone-3.5.0.jar -role hub
4.2 启动node
java -jar selenium-server-standalone-3.5.0.jar -role node -port 5555 -hub http://localhost:4444/grid/register
java -jar selenium-server-standalone-3.5.0.jar -role node
同理我们另外启动两个 node(使用端口号分别为5556/5557):
java -jar selenium-server-standalone-3.5.0.jar -role node -port 5556 -hub http://localhost:4444/grid/register java -jar selenium-server-standalone-3.5.0.jar -role node -port 5557 -hub http://localhost:4444/grid/register
4.3 更好的启动方法 — bat脚本
cd /d D:\\grid start java -jar selenium-server-standalone-3.5.0.jar -role hub start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5555 -hub http://localhost:4444/grid/register start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5556 -hub http://localhost:4444/grid/register start java -jar selenium-server-standalone-3.5.0.jar -role node -port 5557 -hub http://localhost:4444/grid/register
from selenium.webdriver import Remote driver = Remote(command_executor= \'http://192.168.87.1:4444/wd/hub\', #command_executor参数格式是固定的 desired_capabilities= {\'platform\':\'ANY\', \'browserName\':\'chrome\', #这个desired_capabilities参数格式也是固定的 \'version\':\'\', \'javascriptEnable\':True } ) driver.get(\'http://www.baidu.com\') driver.find_element_by_id(\'kw\').send_keys(\'remote\') driver.find_element_by_id(\'su\').click()
例子二:
我们分别在本机上开启了一个hub 和3个node: 来测试自动运行浏览器
1 lists = {\'http://192.168.87.1:4444/wd/hub\':\'chrome\', 2 \'http://192.168.87.1:5555/wd/hub\': \'firefox\', 3 \'http://192.168.87.1:5556/wd/hub\': \'firefox\'} 4 5 for host,browser in lists.items(): 6 print host,browser 7 8 driver = Remote(command_executor=host, 9 desired_capabilities={\'platform\':\'ANY\', 10 \'browserName\':browser, 11 \'version\':\'\', 12 \'javascriptEnabled\':True} 13 ) 14 15 driver.get(\'http://www.baidu.com\') 16 driver.find_element_by_id(\'kw\').send_keys(browser) 17 driver.find_element_by_id(\'su\').click()
例子三:实现在远程的node上运行测试用例
要想在其他主机上启动node,则必须满足下面的条件:
(1).本地的hub主机必须与远程的node主机之间可以用ping联通.我用的是虚拟机 需要注意一点的是 需要关闭防火墙才可以ping通对方,否则会不通.
(2)远程主机必须安装浏览器和webdriver驱动 并且要放在环境变量path目录下
(3).远程主机必须要安装java环境,并且还需要讲selenium server的jar包放在远程主机本地目录下,因为在调用远程node主机的时候需要在远程主机上运行node
(4).也要安装python环境
操作步骤:
1.启动本地hub主机(本机IP地址为:192.168.87.1)
2.启动远程node主机(远程主机ip地址为:192.168.31.128)
设置端口号为5556,指向的hub为主机IP地址:192.168.87.1
3.修改远程主机的ip地址和端口号,在远程主机上的firefox和Chrome上运行脚本
lists = {\'http://192.168.31.128:5556/wd/hub\':\'chrome\', \'http://192.168.31.128:5555/wd/hub\': \'firefox\', \'http://192.168.87.1:4444/wd/hub\': \'firefox\'} for host,browser in lists.items(): print host,browser driver = Remote(command_executor=host, desired_capabilities={\'platform\':\'ANY\', \'browserName\':browser, \'version\':\'\', \'javascriptEnabled\':True} ) driver.get(\'http://www.baidu.com\') driver.find_element_by_id(\'kw\').send_keys(browser) driver.find_element_by_id(\'su\').click()
现在再来运行脚本,会发现在远程主机上可以看到脚本被运行.
5. 常见问题
以上是关于配置selenium grid的主要内容,如果未能解决你的问题,请参考以下文章