zoukankan      html  css  js  c++  java
  • 转: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了。

  • 相关阅读:
    讯飞语音合成 简单使用
    android UI 操作 不要在子线程中操作UI
    把信送给加西亚
    android 二维码 扫描,生成,竖屏
    Android App签名(为apk签名)
    android 蓝牙 通信 bluetooth
    Android 蓝牙开发基本流程
    Android 使用 Application 简单介绍
    几个比较特殊的目录
    FHS目录配置下,常见的几个问题及解答
  • 原文地址:https://www.cnblogs.com/lci05/p/3922480.html
Copyright © 2011-2022 走看看