Selenium WebDriver + Grid2 + RSpec之旅(二)
----Grid2的配置
为什么要使用Selenium-Grid
- 分布式运行大规模的TestCase
- 能够通过一个中央节点,很容易的运行不同OS上的不同Browser
- 最小化对Grid的维护时间,充分利用虚拟设备
- 减少测试人员的工作量,提高测试效率
Selenium-Grid的部署与启动
Hub:总控节点,连接调用Node,负责分配用例到对应的Node节点所在的执行器上Node
Node:负责执行TestCase,启动浏览器
由于作者苦逼屌丝一枚,资源有限,就以一台机器为例,版本对应selenium-server-standalone-2.37.0.jar:
启动Hub:
通过windows的DOS窗口进入selenium-server-standalone-2.37.0.jar所在目录
执行命令java -jar selenium-server-standalone-2.37.0.jar -role hub 启动hub,运行界面如下:
在浏览器中访问:可以查看Hub状态。
Hub默认启动端口为4444,如果要修改端口的话,就在命令后面加参数 -port 。如要修改端口为9999,执行命令为:
java -jar selenium-server-standalone-2.37.0.jar -role hub -port 9999
启动Node:
Node可以不和Hub部署在不同的机器上,在这里我们是部署在同一台机器上,方法和启动Hub类似,只是命令不同
java -jar selenium-server-standalone-2.37.0.jar -role node -hub -browser browserName="internet explorer",version=10,platform=WINDOWS
Node默认启动端口是5555,如果要换端口的话,方法和Hub一样后面加-port参数,这里指的是Hub的地址,如果Hub的IP为192.168.1.100端口为5678的话,应该为
如果要启动Firefox和chrome的话 同样也可以添加Node,添加的时候要注意防止端口冲突
java -jar selenium-server-standalone-2.37.0.jar -Dwebdriver.firefox.bin="C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -role webdriver -hub -browser browserName=firefox -port 6666
java -jar selenium-server-standalone-2.37.0.jar -Dwebdriver.chrome.driver="D:\BrowserDriver\chromedriver.exe" -role webdriver -hub -port 7777 -browser browserName=chrome
然后,在浏览器中访问:可以查看Hub状态
至此,Selenium Grid2已经配置成功了。
Node配置
在浏览器中访问:,把鼠标放到各个浏览器图标上,就可以看到Node的配置信息
内容类似:
{ "platform": "VISTA",
"seleniumProtocol": "WebDriver",
"browserName": "firefox" }
其中,seleniumProtocol就是定义的协议了。
如何修改Driver配置呢?可以从启动参数里操作。
browser browserName="internet explorer",version=10,platform=WINDOWS
那Node默认启动的配置是什么呢?
由于如果从启动参数里,配置这个多东西,很难写的。因此,官方很人性化的提供了JSON文件来配置。也就是说默认启动的配置如下:
如果想自定义配置,直接对json文件修改,启动时,指定配置文件就可以了。
java -jar selenium-server-standalone-2.37.0.jar -role hub -hubConfig hubconfig.json 仅仅就这样就行了?从博文知道,浏览器的启动是要制定一些driver位置的,否则Node不知道怎么启动浏览器实例。因此需要进行指定:
java -jar selenium-server-standalone-2.37.0.jar -port 7777 -role node -hub -nodeConfig nodeconfig.json -Dwebdriver.chrome.driver="D:\BrowserDriver\chromedriver.exe"
参考文档: