qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Selenium Grid深入學(xué)習(xí)

           應(yīng)網(wǎng)友要求寫一個(gè)用Selenium Grid控制多系統(tǒng)多瀏覽器并行執(zhí)行test case的例子。
            因?yàn)槲疫@里有兩臺(tái)機(jī)子,我打算這樣演示:
            一臺(tái)機(jī)子啟動(dòng)一個(gè)作為主點(diǎn)節(jié)的hub 和 一個(gè)作為次節(jié)點(diǎn)的hub(系統(tǒng)windows 瀏覽器為ie) ip為:192.168.40.24
            另一臺(tái)機(jī)子啟動(dòng)兩個(gè)次節(jié)點(diǎn)hub,一個(gè)次節(jié)點(diǎn)瀏覽器為firefox,另一個(gè)瀏覽器為chrome (系統(tǒng)為windows),ip為:192.168.40.67
            啟動(dòng)各節(jié)點(diǎn)hub
            啟動(dòng)主節(jié)點(diǎn)hub命令:
            java -jar selenium-server-standalone-2.24.1.jar -role hub
            啟動(dòng)與主節(jié)點(diǎn)同一機(jī)子的次節(jié)點(diǎn)hub命令:
            java -jar selenium-server-standalone-2.24.1.jar -role node  -hub http://localhost:4444/grid/register -browser browserName="internet explorer"
            啟動(dòng)另外一臺(tái)機(jī)子的兩個(gè)節(jié)點(diǎn)hub命令分別為:
            啟動(dòng)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"這個(gè)是傳我的firefox瀏覽器安裝地址,不然找不到。
            啟動(dòng)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",這個(gè)是傳入我chromedriver.exe的放置地址。端口設(shè)為6666,防止和上面firefox的重復(fù)。
            鏈接好后,可以在http://localhost:4444/grid/console可以查看到三個(gè)子節(jié)點(diǎn)的狀態(tài)。啟動(dòng)詳細(xì)方法可以參考前面的文章
            Selenium Grid只是提供多系統(tǒng)、多瀏覽器的執(zhí)行環(huán)境,而不是說任務(wù)一個(gè)test case丟給它就能并行運(yùn)行。并行的運(yùn)行我這里就交給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參數(shù)有誤,只能為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("實(shí)例化url出錯(cuò),檢查一下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>
            運(yùn)行testng.xml就可以了。
            如果你是用ant把上面的參數(shù)傳進(jìn)去也是可以的。我這里就直接簡(jiǎn)單地放在testng.xml了。

          posted on 2014-09-15 10:33 順其自然EVO 閱讀(203) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 西和县| 游戏| 阿合奇县| 灵石县| 宁安市| 囊谦县| 云南省| 鄂伦春自治旗| 潍坊市| 古丈县| 巫山县| 兴宁市| 泌阳县| 利津县| 巴塘县| 龙州县| 藁城市| 霸州市| 湟源县| 四平市| 长治县| 义乌市| 多伦县| 周至县| 来安县| 兴和县| 镇雄县| 望奎县| 桑植县| 三门县| 太保市| 万源市| 黄大仙区| 彭州市| 比如县| 江华| 庆城县| 保定市| 临江市| 克什克腾旗| 墨竹工卡县|