zoukankan      html  css  js  c++  java
  • selenium 测试框架中使用grid

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html

    配合Jenkins可持续集成:http://www.cnblogs.com/tobecrazy/p/4529399.html

    在测试框架中使用Log4J 2 :http://www.cnblogs.com/tobecrazy/p/4557592.html

    首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows、Linux、Android)的框架,并且

    这些平台是由一个中心点控制,这个中心点称之为HUB,而那些不同的平台称之为NODE

    其结构如下:

    为什么使用selenium grid:

    如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的solution就是使用grid.selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。

    怎么使用:

    首先启用HUB:

    在A机器下载:selenium standalone 4.6:http://pan.baidu.com/s/1qWE7SD2

    然后创建HUB.bat

    内容为:

    1 java -jar selenium-server-standalone-2.46.0.jar -role hub 

    其默认监听端口4444,默认IP localhost  如果要修改,只需要加-port 参数和-Hubhost 

    java -jar selenium-server-standalone-2.46.0.jar -role hub  -port 1235 -Hubhost 192.168.2.45

    接下来在B机添加node ,创建Node.bat,这里使用的是默认的Hubhost Ip 和端口

    1 java -jar selenium-server-standalone-2.46.0.jar -role node -hub http://localhost:4444/grid/register

    为了使用chrome和IE driver,我们需要这样设置

    1 java -Dwebdriver.ie.driver="C:UsersworkspaceDemowebDriverIEDriverServer.exe" -Dwebdriver.chrome.driver="C:UsersworkspaceDemowebDriverchromedriver.exe" -jar selenium-server-standalone-2.46.0.jar -role node -hub http://localhost:4444/grid/register

    分别启动这两个bat

    若使用remote Driver,需要设置这样的参数

    DesiredCapabilities capability = DesiredCapabilities.firefox();
            WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);
            capability.setBrowserName("firefox" ); 
            capability.setVersion("3.6");

    所以我们索性创建一个bean

     1 /**
     2  * 
     3  */
     4 package com.dbyl.libarary.utils;
     5 
     6 /**
     7  * for remote browser bean
     8  * @author Young
     9  *
    10  */
    11 public class RemoteBrowserBean {
    12     private String browserName;
    13     private String version;
    14     private String[] platform;
    15     private String hubURL;
    16     public String getBrowserName() {
    17         return browserName;
    18     }
    19     
    20     public RemoteBrowserBean()
    21     {
    22         this.browserName="firefox";
    23         this.version="38";
    24         this.platform=new String[]{"VISTA", "windows 7"};
    25         this.hubURL="http://localhost:4444/wd/hub";
    26         
    27     }
    28     
    29     public RemoteBrowserBean(String browser)
    30     {
    31         this.browserName=browser;
    32         this.version="42";
    33         this.platform=new String[]{"VISTA", "windows 7"};
    34         this.hubURL="http://localhost:4444/wd/hub";
    35         
    36     }
    37     
    38     public void setBrowserName(String browserName) {
    39         this.browserName = browserName;
    40     }
    41     public String getVersion() {
    42         return version;
    43     }
    44     public void setVersion(String version) {
    45         this.version = version;
    46     }
    47  
    48     
    49     public String[] getPlatform() {
    50         return platform;
    51     }
    52 
    53     public void setPlatform(String[] platform) {
    54         this.platform = platform;
    55     }
    56 
    57     public String getHubURL() {
    58         return hubURL;
    59     }
    60     public void setHubURL(String hubURL) {
    61         this.hubURL = hubURL;
    62     }
    63     
    64 
    65 }

    然后在DriverFactory里创建getRemoteDriver

     1 /**
     2      * This method will create RemoteWebdriver
     3      * @author Young
     4      * @param remoteBrowserBean
     5      * @return WebDriver
     6      */
     7     public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) {
     8         DesiredCapabilities capability = null;
     9         if (remoteBrowserBean.getBrowserName().contains("firefox")) {
    10             capability = DesiredCapabilities.firefox();
    11         } else if (remoteBrowserBean.getBrowserName().contains("chrome")) {
    12             capability = DesiredCapabilities.chrome();
    13         }
    14 
    15         WebDriver driver = null;
    16         try {
    17             driver = new RemoteWebDriver(
    18                     new URL(remoteBrowserBean.getHubURL()), capability);
    19         } catch (MalformedURLException e) {
    20             e.printStackTrace();
    21         }
    22         capability.setBrowserName(remoteBrowserBean.getBrowserName());
    23         capability.setVersion(remoteBrowserBean.getVersion());
    24         capability.setCapability(remoteBrowserBean.getPlatform()[0],
    25                 remoteBrowserBean.getPlatform()[1]);
    26         driver.manage().window().maximize();
    27         return driver;
    28     }

    接下来就可以在case里边使用

    1 @BeforeClass(alwaysRun=true)
    2     public void beforeTest()
    3     {
    4         driver = DriverFactory.getRemoteDriver(new RemoteBrowserBean("chrome"));
    5     }

     下载地址:https://github.com/tobecrazy/Demo

  • 相关阅读:
    Mysql5.5安装
    JVM内存管理
    jquery, js轮播图插件Swiper3
    Redis基本结构
    ArcGIS10.1发布WFS-T服务
    ArcGIS10.1如何将数据库注册到ARCSERVER服务器
    转:Oracle密码过期,取消密码180天限制
    oracle数据库导入导出命令
    转载:oracle11G 已开启监听,但远程连接依旧无监听解决过程
    Xcode group
  • 原文地址:https://www.cnblogs.com/tobecrazy/p/4564902.html
Copyright © 2011-2022 走看看