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)的框架,而且git

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

其結構以下:web

爲何使用selenium grid:chrome

若是你的程序須要在不用的瀏覽器,不一樣的操做系統上測試,並且比較多的case須要多線程遠程執行,那麼一個比較好的solution就是使用grid.selenium-grid是用於設計幫助咱們進行分佈式測試的工具,其整個結構是由一個hub節點和若干個代理節點組成。hub用來管理各個代理節點的註冊和狀態信息,而且接受遠程客戶端代碼的請求調用,而後把請求的命令再轉發給代理節點來執行。windows

怎麼使用:瀏覽器

首先啓用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     }

 下載地址:https://github.com/tobecrazy/Demo

相關文章
相關標籤/搜索