selenium 測試框架中使用grid
之前的測試框架:http://www.cnblogs.com/tobecrazy/p/4553444.html
配合Jenkins可持續集成:http://www.cnblogs.com/tobecrazy/p/4529399.html
在測試框架中使用Log4J 2 :http://www.cnblogs.com/tobecrazy/p/4557592.html
首先介紹一下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,我們需要這樣設置
java -Dwebdriver.ie.driver="C:\Users\workspace\Demo\webDriver\IEDriverServer.exe" -Dwebdriver.chrome.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
/**
- */ package com.dbyl.libarary.utils;
/**
- for remote browser bean
@author Young / public class RemoteBrowserBean { private String browserName; private String version; private String[] platform; private String hubURL; public String getBrowserName() {
return browserName;
}
public RemoteBrowserBean() {
this.browserName="firefox"; this.version="38"; this.platform=new String[]{"VISTA", "windows 7"}; this.hubURL="http://localhost:4444/wd/hub";
}
public RemoteBrowserBean(String browser) {
this.browserName=browser; this.version="42"; this.platform=new String[]{"VISTA", "windows 7"}; this.hubURL="http://localhost:4444/wd/hub";
}
public void setBrowserName(String browserName) {
this.browserName = browserName;
} public String getVersion() {
return version;
} public void setVersion(String version) {
this.version = version;
}
public String[] getPlatform() {
return platform;
}
public void setPlatform(String[] platform) {
this.platform = platform;
}
public String getHubURL() {
return hubURL;
}
public void setHubURL(String hubURL) {
this.hubURL = hubURL;
}
}</pre>
然后在DriverFactory里創建getRemoteDriver
/*** This method will create RemoteWebdriver * @author Young * @param remoteBrowserBean * @return WebDriver */ public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) { DesiredCapabilities capability = null; if (remoteBrowserBean.getBrowserName().contains("firefox")) { capability = DesiredCapabilities.firefox(); } else if (remoteBrowserBean.getBrowserName().contains("chrome")) { capability = DesiredCapabilities.chrome(); } WebDriver driver = null; try { driver = new RemoteWebDriver( new URL(remoteBrowserBean.getHubURL()), capability); } catch (MalformedURLException e) { e.printStackTrace(); } capability.setBrowserName(remoteBrowserBean.getBrowserName()); capability.setVersion(remoteBrowserBean.getVersion()); capability.setCapability(remoteBrowserBean.getPlatform()[0], remoteBrowserBean.getPlatform()[1]); driver.manage().window().maximize(); return driver; }</pre><br />
接下來就可以在case里邊使用
1 @BeforeClass(alwaysRun=true) 2 public void beforeTest() 3 { 4 driver = DriverFactory.getRemoteDriver(new RemoteBrowserBean("chrome")); 5 }
出處:http://www.cnblogs.com/tobecrazy/