`
aerchi
  • 浏览: 425473 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

selenium webdriver学习(二十一)------------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代码:

Java代码收藏代码
  1. packagedriver;
  2. importjava.net.MalformedURLException;
  3. importjava.net.URL;
  4. importorg.openqa.selenium.By;
  5. importorg.openqa.selenium.WebDriver;
  6. importorg.openqa.selenium.remote.DesiredCapabilities;
  7. importorg.openqa.selenium.remote.RemoteWebDriver;
  8. importorg.testng.annotations.AfterMethod;
  9. importorg.testng.annotations.BeforeMethod;
  10. importorg.testng.annotations.Parameters;
  11. importorg.testng.annotations.Test;
  12. publicclassGridParallelTests{
  13. privateWebDriverdr;
  14. DesiredCapabilitiestest;
  15. StringbaseUrl;
  16. @Parameters({"browser","nodeUrl","webSite"})
  17. @BeforeMethod
  18. publicvoidsetUp(Stringbrowser,StringnodeUrl,StringwebSite){
  19. baseUrl=webSite;
  20. if(browser.equals("ie"))test=DesiredCapabilities.internetExplorer();
  21. elseif(browser.equals("ff"))test=DesiredCapabilities.firefox();
  22. elseif(browser.equals("chrome"))test=DesiredCapabilities.chrome();
  23. elseSystem.out.println("browser参数有误,只能为ie、ff、chrome");
  24. Stringurl=nodeUrl+"/wd/hub";
  25. URLurlInstance=null;
  26. try{
  27. urlInstance=newURL(url);
  28. }catch(MalformedURLExceptione){
  29. //TODOAuto-generatedcatchblock
  30. e.printStackTrace();
  31. System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");
  32. }
  33. dr=newRemoteWebDriver(urlInstance,test);
  34. dr.get(webSite);
  35. }
  36. @Test
  37. publicvoidtest(){
  38. dr.get(baseUrl);
  39. dr.findElement(By.id("kw")).sendKeys("selenium");
  40. dr.findElement(By.id("su")).click();
  41. try{
  42. Thread.sleep(10000);
  43. }catch(InterruptedExceptione){
  44. //TODOAuto-generatedcatchblock
  45. e.printStackTrace();
  46. }
  47. System.out.println("title:"+dr.getTitle());
  48. }
  49. @AfterMethod
  50. publicvoidquit(){
  51. dr.close();
  52. }
  53. }

testng.xml:

Xml代码收藏代码
  1. <!DOCTYPEsuiteSYSTEM"http://beust.com/testng/testng-1.0.dtd">
  2. <suitename="Suite1"parallel="tests"thread-count="5">
  3. <testname="test1">
  4. <parametername="browser"value="ff"/>
  5. <parametername="nodeUrl"value="http://192.168.40.67:5555"/>
  6. <parametername="webSite"value="http://www.baidu.com"/>
  7. <classes>
  8. <classname="driver.GridParallelTests"></class>
  9. </classes>
  10. </test>
  11. <testname="test2">
  12. <parametername="browser"value="chrome"/>
  13. <parametername="nodeUrl"value="http://192.168.40.67:6666"/>
  14. <parametername="webSite"value="http://www.baidu.com"/>
  15. <classes>
  16. <classname="driver.GridParallelTests"></class>
  17. </classes>
  18. </test>
  19. <testname="test3">
  20. <parametername="browser"value="ie"/>
  21. <parametername="nodeUrl"value="http://192.168.40.24:5555"/>
  22. <parametername="webSite"value="http://www.baidu.com"/>
  23. <classes>
  24. <classname="driver.GridParallelTests"></class>
  25. </classes>
  26. </test>
  27. </suite>

运行testng.xml就可以了。

如果你是用ant把上面的参数传进去也是可以的。我这里就直接简单地放在testng.xml了。


http://jarvi.iteye.com/blog/1571262

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics