qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Selenium Grid深入學習

           應網友要求寫一個用Selenium Grid控制多系統多瀏覽器并行執行test case的例子。
            因為我這里有兩臺機子,我打算這樣演示:
            一臺機子啟動一個作為主點節的hub 和 一個作為次節點的hub(系統windows 瀏覽器為ie) ip為:192.168.40.24
            另一臺機子啟動兩個次節點hub,一個次節點瀏覽器為firefox,另一個瀏覽器為chrome (系統為windows),ip為:192.168.40.67
            啟動各節點hub
            啟動主節點hub命令:
            java -jar selenium-server-standalone-2.24.1.jar -role hub
            啟動與主節點同一機子的次節點hub命令:
            java -jar selenium-server-standalone-2.24.1.jar -role node  -hub http://localhost:4444/grid/register -browser browserName="internet explorer"
            啟動另外一臺機子的兩個節點hub命令分別為:
            啟動firefox的
            java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -browser browserName=firefox
            其中-Dwebdriver.firefox.bin="D:/Program Files/Mozilla Firefox/firefox.exe"這個是傳我的firefox瀏覽器安裝地址,不然找不到。
            啟動chrome的
            java -jar selenium-server-standalone-2.24.1.jar   -Dwebdriver.chrome.driver="D:/chromedriver.exe" -role webdriver  -hub http://192.168.40.24:4444/grid/register -port 6666 -browser browserName=chrome
            其中-Dwebdriver.chrome.driver="D:/chromedriver.exe",這個是傳入我chromedriver.exe的放置地址。端口設為6666,防止和上面firefox的重復。
            鏈接好后,可以在http://localhost:4444/grid/console可以查看到三個子節點的狀態。啟動詳細方法可以參考前面的文章
            Selenium Grid只是提供多系統、多瀏覽器的執行環境,而不是說任務一個test case丟給它就能并行運行。并行的運行我這里就交給testng了。看下面代碼和配制。
            testcase 代碼 和 testng.xml
            testcase代碼:
          package driver;
          import java.net.MalformedURLException;
          import java.net.URL;
          import org.openqa.selenium.By;
          import org.openqa.selenium.WebDriver;
          import org.openqa.selenium.remote.DesiredCapabilities;
          import org.openqa.selenium.remote.RemoteWebDriver;
          import org.testng.annotations.AfterMethod;
          import org.testng.annotations.BeforeMethod;
          import org.testng.annotations.Parameters;
          import org.testng.annotations.Test;
          public class GridParallelTests {
          private WebDriver dr;
          DesiredCapabilities test;
          String baseUrl;
          @Parameters({"browser","nodeUrl","webSite"})
          @BeforeMethod
          public void setUp(String browser,String nodeUrl,String webSite){
          baseUrl = webSite;
          if(browser.equals("ie")) test = DesiredCapabilities.internetExplorer();
          else if(browser.equals("ff")) test = DesiredCapabilities.firefox();
          else if(browser.equals("chrome")) test = DesiredCapabilities.chrome();
          else System.out.println("browser參數有誤,只能為ie、 ff、chrome");
          String url = nodeUrl + "/wd/hub";
          URL urlInstance = null;
          try {
          urlInstance = new URL(url);
          } catch (MalformedURLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          System.out.println("實例化url出錯,檢查一下url格式是否正確,格式為:http://192.168.40.67:5555");
          }
          dr = new RemoteWebDriver(urlInstance,test);
          dr.get(webSite);
          }
          @Test
          public void test(){
          dr.get(baseUrl);
          dr.findElement(By.id("kw")).sendKeys("selenium");
          dr.findElement(By.id("su")).click();
          try {
          Thread.sleep(10000);
          } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          System.out.println("title:"+dr.getTitle());
          }
          @AfterMethod
          public void quit(){
          dr.close();
          }
          }
           testng.xml:
          <!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
          <suite name="Suite1"  parallel="tests" thread-count="5">
          <test name="test1">
          <parameter name="browser" value="ff"/>
          <parameter name="nodeUrl" value="http://192.168.40.67:5555"/>
          <parameter name="webSite" value="http://www.baidu.com"/>
          <classes>
          <class name="driver.GridParallelTests"></class>
          </classes>
          </test>
          <test name="test2">
          <parameter name="browser" value="chrome"/>
          <parameter name="nodeUrl" value="http://192.168.40.67:6666"/>
          <parameter name="webSite" value="http://www.baidu.com"/>
          <classes>
          <class name="driver.GridParallelTests"></class>
          </classes>
          </test>
          <test name="test3">
          <parameter name="browser" value="ie"/>
          <parameter name="nodeUrl" value="http://192.168.40.24:5555"/>
          <parameter name="webSite" value="http://www.baidu.com"/>
          <classes>
          <class name="driver.GridParallelTests"></class>
          </classes>
          </test>
          </suite>
            運行testng.xml就可以了。
            如果你是用ant把上面的參數傳進去也是可以的。我這里就直接簡單地放在testng.xml了。

          posted on 2014-09-15 10:33 順其自然EVO 閱讀(200) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 洛川县| 中牟县| 涪陵区| 忻城县| 那坡县| 潍坊市| 鸡东县| 师宗县| 松原市| 乐安县| 金堂县| 民乐县| 西青区| 天峨县| 文山县| 沁源县| 星座| 平乡县| 文化| 工布江达县| 时尚| 娄底市| 诸城市| 苏尼特右旗| 钟祥市| 顺昌县| 桐乡市| 伊金霍洛旗| 那曲县| 南康市| 嘉峪关市| 靖安县| 巫溪县| 德惠市| 资兴市| 乌苏市| 祁门县| 枣庄市| 慈利县| 日照市| 德钦县|