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. package driver;  
  2.   
  3. import java.net.MalformedURLException;  
  4. import java.net.URL;  
  5.   
  6. import org.openqa.selenium.By;  
  7. import org.openqa.selenium.WebDriver;  
  8. import org.openqa.selenium.remote.DesiredCapabilities;  
  9. import org.openqa.selenium.remote.RemoteWebDriver;  
  10. import org.testng.annotations.AfterMethod;  
  11. import org.testng.annotations.BeforeMethod;  
  12. import org.testng.annotations.Parameters;  
  13. import org.testng.annotations.Test;  
  14.   
  15. public class GridParallelTests {  
  16.         private WebDriver dr;  
  17.         DesiredCapabilities test;  
  18.         String baseUrl;  
  19.       
  20.         @Parameters({"browser","nodeUrl","webSite"})  
  21.         @BeforeMethod  
  22.         public void setUp(String browser,String nodeUrl,String webSite){  
  23.             baseUrl = webSite;  
  24.               
  25.             if(browser.equals("ie")) test = DesiredCapabilities.internetExplorer();  
  26.             else if(browser.equals("ff")) test = DesiredCapabilities.firefox();  
  27.             else if(browser.equals("chrome")) test = DesiredCapabilities.chrome();  
  28.             else System.out.println("browser参数有误,只能为ie、 ff、chrome");  
  29.               
  30.             String url = nodeUrl + "/wd/hub";  
  31.             URL urlInstance = null;  
  32.             try {  
  33.                 urlInstance = new URL(url);  
  34.             } catch (MalformedURLException e) {  
  35.                 // TODO Auto-generated catch block  
  36.                 e.printStackTrace();  
  37.                 System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");  
  38.             }  
  39.             dr = new RemoteWebDriver(urlInstance,test);  
  40.             dr.get(webSite);  
  41.         }  
  42.   
  43.         @Test  
  44.         public void test(){  
  45.             dr.get(baseUrl);  
  46.             dr.findElement(By.id("kw")).sendKeys("selenium");  
  47.             dr.findElement(By.id("su")).click();  
  48.             try {  
  49.                 Thread.sleep(10000);  
  50.             } catch (InterruptedException e) {  
  51.                 // TODO Auto-generated catch block  
  52.                 e.printStackTrace();  
  53.             }  
  54.             System.out.println("title:"+dr.getTitle());  
  55.         }  
  56.           
  57.           
  58.         @AfterMethod  
  59.         public void quit(){  
  60.             dr.close();  
  61.         }  
  62.       
  63. }  
 

testng.xml:

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

 

运行testng.xml就可以了。

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


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

发布了430 篇原创文章 · 获赞 415 · 访问量 925万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览