selenium 測試框架中使用grid

jopen 9年前發布 | 23K 次閱讀 Selenium 測試工具

之前的測試框架: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

為什么使用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/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!