之前研究过Jenkins的应用,知道基本的流程和原理,能进行一些基本的应用。
Grid的好处不多说。Selenium-Grid包括两个部分:
Hub:总控节点,连接调用Node,负责分配用例到对应的Node节点所在的执行器上Node
Node:负责执行TestCase,启动浏览器
举例说一下整个流程:
Start the hub
通过windows的DOS窗口进入selenium-server-standalone-2.48.2.jar所在目录,执行以下命令1
java -jar selenium-server-standalone-2.48.2.jar -role hub
Default port is 4444. To change the default port, you can add the optional parameter -port when you run the command. You can view the status of the hub by opening a browser window and navigating to: http://localhost:4444/grid/console
Start the nodes
进入到node,通过windows的DOS窗口进入selenium-server-standalone-2.48.2.jar所在目录,执行以下命令1
java -jar selenium-server-standalone-2.48.2.jar -role node -hub http://localhost:4444/grid/register
至此,Selenium-Grid就弄成功了,下面我用一个简单的例子来跑一下。
Grid run
Selenium Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36public class Grid {
private WebDriver driver;
DesiredCapabilities browserCapa;
String baseUrl;
@Parameters({ "browser", "nodeUrl", "webSite" })
@BeforeMethod
public void setUp(String browser, String nodeUrl, String webSite) {
baseUrl = webSite;
if (browser.equals("ie"))
browserCapa = DesiredCapabilities.internetExplorer();
else if (browser.equals("ff"))
browserCapa = DesiredCapabilities.firefox();
else if (browser.equals("chrome"))
browserCapa = DesiredCapabilities.chrome();
String url = nodeUrl + "/wd/hub";
try {
driver = new RemoteWebDriver(new URL(url), browserCapa);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driver.get(webSite);
}
@Parameters({ "browser"})
@Test
public void test1(String browser) {
System.out.println(driver.getCurrentUrl());
driver.quit();
System.out.println(browser + " test1");
}
}TestNG XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29<suite thread-count="5" parallel="tests" name="demo" >
<test name="test1">
<parameter name="browser" value="ff"/>
<parameter name="nodeUrl" value="http://localhost:5555"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="testGrid2.Grid" />
</classes>
</test>
<test name="test2">
<parameter name="browser" value="ie"/>
<parameter name="nodeUrl" value="http://10.8.20.160:5555"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="testGrid2.Grid" />
</classes>
</test>
<test name="test3">
<parameter name="browser" value="chrome"/>
<parameter name="nodeUrl" value="http://10.8.20.160:5555"/>
<parameter name="webSite" value="http://www.baidu.com"/>
<classes>
<class name="testGrid2.Grid" />
</classes>
</test>
</suite>
运行testNG XML就可以看到结果了。
只是一个初步的环境搭建,还有很多没想明白的地方,需要再深入的研究一下。