|
首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android
)的框架,并且
这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE
其结构如下:
为什么使用selenium grid:
如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那
么一个比较好的solution就是使用grid.selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个
结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受
远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
怎么使用:
首先启用HUB:
在A机器下载:selenium standalone 4.6:http://pan.baidu.com/s/1qWE7SD2
然后创建HUB.bat
内容为:
1 java -jar selenium-server-standalone-2.46.0.jar -role hub
其默认监听端口4444,默认IP localhost 如果要修改,只需要加-port 参数和-Hubhost
java -jar selenium-server-standalone-2.46.0.jar -role hub -port 1235 -Hubhost 192.168.2.45
接下来在B机添加node ,创建Node.bat,这里使用的是默认的Hubhost Ip 和端口
1 java -jar selenium-server-standalone-2.46.0.jar -role node -hub http://localhost:4444/grid/register
为了使用chrome和IE driver,我们需要这样设置
1 java -Dwebdriver.ie.driver="C:\Users\workspace\Demo\webDriver\IEDriverServer.exe" -Dwebdriver.chr
ome.driver="C:\Users\workspace\Demo\webDriver\chromedriver.exe" -jar selenium-server-standalone-
2.46.0.jar -role node -hub http://localhost:4444/grid/register
分别启动这两个bat
若使用remote Driver,需要设置这样的参数
DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
capability.setBrowserName("firefox" );
capability.setVersion("3.6");
所以我们索性创建一个bean
复制代码
- 1 /**
- 2 *
- 3 */
- 4 package com.dbyl.libarary.utils;
- 5
- 6 /**
- 7 * for remote browser bean
- 8 * @author Young
- 9 *
- 10 */
- 11 public class RemoteBrowserBean {
- 12 private String browserName;
- 13 private String version;
- 14 private String[] platform;
- 15 private String hubURL;
- 16 public String getBrowserName() {
- 17 return browserName;
- 18 }
- 19
- 20 public RemoteBrowserBean()
- 21 {
- 22 this.browserName="firefox";
- 23 this.version="38";
- 24 this.platform=new String[]{"VISTA", "windows 7"};
- 25 this.hubURL="http://localhost:4444/wd/hub";
- 26
- 27 }
- 28
- 29 public RemoteBrowserBean(String browser)
- 30 {
- 31 this.browserName=browser;
- 32 this.version="42";
- 33 this.platform=new String[]{"VISTA", "windows 7"};
- 34 this.hubURL="http://localhost:4444/wd/hub";
- 35
- 36 }
- 37
- 38 public void setBrowserName(String browserName) {
- 39 this.browserName = browserName;
- 40 }
- 41 public String getVersion() {
- 42 return version;
- 43 }
- 44 public void setVersion(String version) {
- 45 this.version = version;
- 46 }
- 47
- 48
- 49 public String[] getPlatform() {
- 50 return platform;
- 51 }
- 52
- 53 public void setPlatform(String[] platform) {
- 54 this.platform = platform;
- 55 }
- 56
- 57 public String getHubURL() {
- 58 return hubURL;
- 59 }
- 60 public void setHubURL(String hubURL) {
- 61 this.hubURL = hubURL;
- 62 }
- 63
- 64
- 65 }
复制代码
复制代码
然后在DriverFactory里创建getRemoteDriver
复制代码
- 1 /**
- 2 * This method will create RemoteWebdriver
- 3 * @author Young
- 4 * @param remoteBrowserBean
- 5 * @return WebDriver
- 6 */
- 7 public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) {
- 8 DesiredCapabilities capability = null;
- 9 if (remoteBrowserBean.getBrowserName().contains("firefox")) {
- 10 capability = DesiredCapabilities.firefox();
- 11 } else if (remoteBrowserBean.getBrowserName().contains("chrome")) {
- 12 capability = DesiredCapabilities.chrome();
- 13 }
- 14
- 15 WebDriver driver = null;
- 16 try {
- 17 driver = new RemoteWebDriver(
- 18 new URL(remoteBrowserBean.getHubURL()), capability);
- 19 } catch (MalformedURLException e) {
- 20 e.printStackTrace();
- 21 }
- 22 capability.setBrowserName(remoteBrowserBean.getBrowserName());
- 23 capability.setVersion(remoteBrowserBean.getVersion());
- 24 capability.setCapability(remoteBrowserBean.getPlatform()[0],
- 25 remoteBrowserBean.getPlatform()[1]);
- 26 driver.manage().window().maximize();
- 27 return driver;
- 28 }
复制代码
复制代码
接下来就可以在case里边使用
- 1 @BeforeClass(alwaysRun=true)
- 2 public void beforeTest()
- 3 {
- 4 driver = DriverFactory.getRemoteDriver(new RemoteBrowserBean("chrome"));
- 5 }
复制代码
|
|