Selenium 測試框架中使用grid

以前的測試框架:http://www.cnblogs.com/tobecrazy/p/4553444.htmlhtml

配合Jenkins可持續集成:http://www.cnblogs.com/tobecrazy/p/4529399.htmljava

在測試框架中使用Log4J 2 :http://www.cnblogs.com/tobecrazy/p/4557592.htmlnode

首先介紹一下grid ,selenium grid 是一種執行測試用例時使用的包含不一樣平臺(windows、Linux、Android)的框架,而且web

這些平臺是由一箇中心點控制,這個中心點稱之爲HUB,而那些不一樣的平臺稱之爲NODEchrome

其結構以下:windows

爲何使用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.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

複製代碼
 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 }
相關文章
相關標籤/搜索