一、启动Grid,顺序执行测试案例:
进入到Selenium Grid的根目录,
ant launch-hub。启动Hub服务。运行后查看http://localhost:4444/console ,检查Hub服务是否启动成功。
Hub启动成功后,首先来试运行一下,在一个新终端窗口中,执行命令:ant run-demo-in-sequence
通过Remote-Control,Selenium测试案例将被顺序执行,Hub只启动一个selenium-RC,这些测试案例都是在一个selenium-RC中运行。这样并不让人感到激动,因为通过正常的Selenium-RC,一样可以办到,对吧。
但这仅仅是一个起步,你的目标可能是想并行地运行测试案例。
此时可用的Remote Controls:
Host | Port | Environment |
localhost | 5555 | *firefox |
二、 与Grid在同一台机器上,只要指定不同的端口号,可以运行多个RC在同一台机器上,并行运行测试案例:
分别在3个终端进入到Selenium Grid的根目录,执行如下操作:
ant -Dport=5556 launch-remote-control
ant -Dport=5557 launch-remote-control
ant -Dport=5558 launch-remote-control
运行后,通过访问Grid控制台,验证RC注册成功,下图可以看到开启了3个remote-control(5555端口是之前执行用例时默认启动的):
注意:同一台机器上启动的Client的端口号不可重复
然后,我们来看看并行执行测试案例,在一个新终端窗口中,执行命令:ant run-demo-in-parallel
通过Remote-Control,Selenium测试案例将被并发执行,这些测试案例都由Hub进行资源分配,在不同的selenium-RC中运行,达到并发效果。
可以从Hub控制台看到调动了4个selenium-RC来同步工作。
此时可用的Remote Controls:
Host | Port | Environment |
localhost | 5555 | *firefox |
localhost | 5556 | *firefox |
localhost | 5557 | *firefox |
localhost | 5558 | *firefox |
三、与Grid不在同一台机器、不同操作系统、甚至不同浏览器下,运行Selenium Remote Control:
ant -Dport="5555" –Dhost=remote-control的IP地址
参数解释:
-Dport:Client的端口号
-Dhost:Client的hostname,如果没有可以用IP代替
-DhubURL:Hub控制台的URL
Denviroment参数,则在不同机上默认用*firefox执行用例。
-DseleniumArgs:SeleniumRC启动的参数
launch-remote-control:表示启动一个Client
启动其它Client同理:参考上述参数,
注意:启动client后,再次查看http://localhost:4444/console ,发现Available Remote Controls列表出现刚启动的Client。
假设环境如下图:
我们三台机器,一台机器hub.thoughtworks.com运行grid,其它两台rc1和rc2分别运行两个RC.则我们需要在启动RC时,使用下列命令指定相应的参数:
ant -Dport=<port> -Dhost=<hostname> -DhubURL=<hub url> -Denvironment="Firefox on Windows" launch-remote-control
其中,-Dport指定RC的端口号,-Dhost指定RC所在机器的Host名。-DhubURL指定Grid机器的URL,-Denvironment标示RC的浏览器和操作平台。
具体可参考Grid控制台说明,也可以查看grid_configuration.yml配置文件。
URL可以使Host Name,也可以是TCP/IP。
按照上图所示参数运行完毕后,通过Grid控制台验证成功结果如下:
Host | Port | Environment |
rc1.seleniumhq.org | 5555 | Firefox on Windows |
rc1.seleniumhq.org | 5556 | Firefox on Windows |
rc2.seleniumhq.org | 5555 | Firefox on Mac |
rc2.seleniumhq.org | 5556 | Firefox on Mac |
这样,Selenium Hub会确保提供给测试案例使用的Remote-Control。需要注意的是,Remote Control的环境参数可以随意注册,即使FireFox浏览器工作在Linux下,你也可以向Hub注册,说它工作在OS X下。这就意味着Hub不会检验注册信息的正确性,你南大要自行保证这一点。
可以在不同平台下执行测试案例,在一个新终端窗口中,执行命令:ant run-demo-for-multiple-environments
四、Selenium Grid的一些缺点:
一些目前已知的会影响使用的问题(可以通过重启服务来解决)。
Hub监控页面不能快速地更新链接到它上面的Client资源
如果Selenium脚本运行被意外终止,或者remote-control被关闭,Client资源不会被释放。