1、默认启动Hub命令
java−jarselenium−server−standalone−2.53.1.jar−rolehub在命令行中用−port选项可以更换Hub的端口
java -jar selenium-server-standalone-2.53.1.jar -role hub -port 8888
其默认监听端口4444,默认IP是localhost 如果要修改,只需要加-port 参数和-Hubhost
例如:java -jar selenium-server-standalone-2.53.0.jar -role hub -port 1234 -Hubhost 192.168.1.30
可以在浏览器中输入如下地址来检查Hub是否启动成功:
http://localhost:4444/grid/console
查看端口占用:$netstat -a
2、json配置文件
除了在启动命令中指定参数来定制Hub的配置,还可以通过预定义好的配置文件来启动Hub.
这些配置信息可以写在一个json格式的配置文件中
示例:
{
“host”:null,
“port”:4444,
“newSessionWaitTimeout”:”-1”,
“servlets”:[],
“prioritizer”:null;
“capabilityMatcher”:”org.openqa.grid.internal.utils.DefaultCapabilityMatcher”,
“throwOnCapabilityNotPresent”:true,
“nodePolling”:5000,
"cleanUpCycle":5000,
"timeout":300000,
"broserTimeout":0,
"maxSession":5
}
然后通过在启动命令中添加-hubConfig参数来加载该JSON配置文件:
$ java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hub-json-cfg.json
3、默认启动Node
$ java -jar selenium-server-standalone-2.53.1.jar -role node -hub
4、注册Node
在Hub上注册多个不同的Node
一、注册 Mac OS X & Opera
方式一:
java−jarselenium−server−standalone−2.53.1.jar−rolenode−browser“seleniumProtocol=WebDriver,browserName=opera,version=15,maxInstances=1,platform=MAC”−hubHostlocalhost方式二:创建一个JSON格式的配置文件,并且在启动Node时加载JSON配置文件“class”:”org.openqa.grid.common.RegistrationRequest”,“capabilities”:[“seleniumProtocol”:”WebDriver”,“browserName”:”openqa”,“version”:”15”,“maxInstances”:1,“platform”:”MAC”],“configuraton”:“proxy”:”org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,“maxSession”:5,“port”:5555,“host”:”localhost”,“register”:”true”,“registerCycle”:5000,“hubPort”:4444,“hubHost”:”localhost”,利用此JSON配置文件的启动命令如下:
java -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node-json-mac-openqa.cfg.json
二、注册Linux & Firefox
$ java -jar selenium-server-standalone-2.53.1.jar -role node -browser “seleniumProtocol = WebDriver,browserName = firefox,version = 25,firefox_binary = /home/selenium2/firefox25/firefox,maxInstances = 2,platform = LINUX” -hubHost 192.168.0.104
三、注册Windows & Internet Explorer
seleniumProtocol设置为Selenium,表示执行模式为Remote Control(legacy)
$ java -jar selenium-server-standalone-2.53.1.jar -role node -browser “seleniumProtocol = Selenium,browserName = iexplore,version = 10,maxInstances = 4,platform = WINDOWS” -hubHost 192.168.0.104
知识补充:
selenium的projects包含如下几个方面:
1.Selenium IDE 、 2.Selenium Remote Control 、 3.Selenium Grid 、4.Selenium WebDriver
1. Selenium IDE作为Firefox上的一个插件,提供录制功能,个人观点,如果能手写代码,就不要用这个东西。
2. Selenium Remote Control是一个客户端/服务器系统,可以在本地或在其他电脑上控制Web浏览器,使用几乎任何编程语言和测试框架。
3. Selenium Grid 可以远程的控制到并在多个服务器上同时运行测试
4. Selenium WebDriver可以在本地或远程计算机上的驱动浏览器
四、注册Andriod & Chrome
设置转发端口,其作用是确保主机与Android模拟器或者真机可以进行通信
./adb−sforwardtcp:8080tcp:8080如果是在linux环境下操作,可通过如下命令安装socat并设置端口转发。其作用是确保在另外一台机器上也可以访问当前机器上的AndroidWebDriverServer.
sudo apt-get install socat
$socat TCP-LISTEN:8889,for TCP:localhost:8080
通过上面的设置,就可以在网络上任意一个地方通过如下地址来访问Andoid WebDriver Server 了: http://hostname:8889/wb/hub
接下来注册Android 和自带Chrome浏览器组合的Node到Hub
$ java -jar selenium-server-standalone-2.53.1.jar -role node -browser “seleniumProtocol = Selenium,browserName = android,version = 4,maxInstances = 1,platform = ANDROID” -port 8889 -hubHost 192.168.0.104
编写Selenium Grid的测试用例
需添加如下代码来使已有的测试用例代码能运行在Selenium Grid 环境中(执行模式为WebDriver)
DesiredCapabilities firefoxCap = DesiredCapabilities.firefox();
firefoxCap.setBrowserName(“firefox”);
firefoxCap.setVersion(“25”);
firefoxCap.setPlatform(“Linux”);
WebDriver driver = new RemoteWebDriver(new URL(“http://localhost:4444/wd/hub“),firefoxCap);
如上述代码所示,需通过DesiredCapabilities来设置测试用例适用的浏览器名称、浏览器版本和操作系统平台,这样就可以确保该测试用例被Hub分配到同时满足以上三个条件的Node上执行