Selenium Grid深入學(xué)習(xí)
因?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í)專欄