之前的测试框架: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

内容为:

 java -jar selenium-server-standalone-2.46..jar -role hub 

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

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

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

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

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

 java -Dwebdriver.ie.driver="C:\Users\workspace\Demo\webDriver\IEDriverServer.exe" -Dwebdriver.chrome.driver="C:\Users\workspace\Demo\webDriver\chromedriver.exe" -jar selenium-server-standalone-2.46..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

 /**
*
*/
package com.dbyl.libarary.utils; /**
* for remote browser bean
* @author Young
*
*/
public class RemoteBrowserBean {
private String browserName;
private String version;
private String[] platform;
private String hubURL;
public String getBrowserName() {
return browserName;
} public RemoteBrowserBean()
{
this.browserName="firefox";
this.version="38";
this.platform=new String[]{"VISTA", "windows 7"};
this.hubURL="http://localhost:4444/wd/hub"; } public RemoteBrowserBean(String browser)
{
this.browserName=browser;
this.version="42";
this.platform=new String[]{"VISTA", "windows 7"};
this.hubURL="http://localhost:4444/wd/hub"; } public void setBrowserName(String browserName) {
this.browserName = browserName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
} public String[] getPlatform() {
return platform;
} public void setPlatform(String[] platform) {
this.platform = platform;
} public String getHubURL() {
return hubURL;
}
public void setHubURL(String hubURL) {
this.hubURL = hubURL;
} }

然后在DriverFactory里创建getRemoteDriver

 /**
* This method will create RemoteWebdriver
* @author Young
* @param remoteBrowserBean
* @return WebDriver
*/
public static WebDriver getRemoteDriver(RemoteBrowserBean remoteBrowserBean) {
DesiredCapabilities capability = null;
if (remoteBrowserBean.getBrowserName().contains("firefox")) {
capability = DesiredCapabilities.firefox();
} else if (remoteBrowserBean.getBrowserName().contains("chrome")) {
capability = DesiredCapabilities.chrome();
} WebDriver driver = null;
try {
driver = new RemoteWebDriver(
new URL(remoteBrowserBean.getHubURL()), capability);
} catch (MalformedURLException e) {
e.printStackTrace();
}
capability.setBrowserName(remoteBrowserBean.getBrowserName());
capability.setVersion(remoteBrowserBean.getVersion());
capability.setCapability(remoteBrowserBean.getPlatform()[0],
remoteBrowserBean.getPlatform()[1]);
driver.manage().window().maximize();
return driver;
}

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

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

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

selenium 测试框架中使用grid的更多相关文章

  1. selenium测试框架使用xml作为对象库

    之前已经写过一篇: selenium测试框架篇,页面对象和元素对象的管理 上次使用的excel作为Locator对象管理,由于excel处理不够方便,有以下缺点: 不能实现分page 加载Locato ...

  2. selenium测试框架篇,页面对象和元素对象的管理

    前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让 ...

  3. selenium测试框架篇

    做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让整个测试体系: 更容易维护 大大增加代码重用 增加测试系统的稳定性 这里先了解一下我所说的对象库: 所谓的页面对象,是指每一个真是的页面是 ...

  4. 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)

    目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...

  5. 在测试框架中使用Log4J 2

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecr ...

  6. python nose测试框架中使用allure_report框架

    在使用nose自带的xunit生成xml文件生成测试报告后,领导说报告不够炫,没有百分比效果,且在web自动化时的截图不美观,html很多情况下没有显示图片(nose框架截图方法这里),正好,allu ...

  7. 封装selenium自动化框架中的截图功能

    对selenium自带的截图功能进行封装: 以下为封装的代码,自定义一个.py文件即可,图片路径自己设置一个. #coding:utf-8 class Screen(object): ''' 封装的截 ...

  8. Unit Test测试框架中的测试的执行顺序

    [ClassInitialize()] [ClassCleanup()] [TestInitialize()] [TestMethod] [TestCleanup()] 在执行一个或多个[TestMe ...

  9. 【Python】【unittest】unittest测试框架中setup,teardown与setupclass,teardownclass的区别

    # -*- coding:utf-8 -*- import unittest def runTest(testcaseclass,testcase=[]): suite = unittest.Test ...

随机推荐

  1. redis分片

    本文是在window环境下测试 什么是分片 当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储 那么当多个请求来取数据时,如何知道数据在哪个redis呢,redis有 ...

  2. 1.ios synthesize有什么作用

    ###1.ios synthesize有什么作用 当定义了一系列的变量时,需要写很多的getter和setter方法,而且它们的形式都是差不多的,所以Xcode提供了@property和@synthe ...

  3. oracle db link的查看创建与删除

    1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...

  4. ionic 获取手机所在位置

    之前项目中需要使用到定位功能,前边的文章提到的坐标位置是有问题的,是国际坐标,国内的环境使用google地图会出现问题,所以需要使用国内的地图进行坐标解析,因为国内和国外的坐标体系不一致,需要通过转换 ...

  5. angular2学习地址

    http://www.hubwiz.com/course/5599d367a164dd0d75929c76/ http://learnangular2.com/inputs/ https://www. ...

  6. form表单练习

    注册页面的设计 <body leftmargin="400px" topmargin="200px"> <form method=" ...

  7. PowerDesigner连接Oracle并导出表结构

    环境:Oracle 11G(远程) + win32_11gR2_client + PowerDesigner 15 一.下载.安装.配置 1.下载地址 win32_11gR2_client客户端下载地 ...

  8. mysql 用drop和delete方法删除用户的区别

    在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下. (方法一)drop user 用户名; 语法:drop user 用 ...

  9. 2.1、Hibernate多表操作--一对多、多对一、多对多。

    一.什么是一对一.一对多.多对一及多对多关系(以简单的学生和老师的关系为例来说): 1.一对一:学生具有学号和姓名(假定没有同名的学生)这两个属性,那么我知道了学生的学号也就能找到对应的学生姓名,如果 ...

  10. 阿里提前批校招内推offer经历

    经过一个半月的阿里内推面试,今天终于收到了阿里的offer邮件 .阿里的内推面试一共有四轮,本人是7月19号投的内推邮件,8月28号收到了offer的邮件.首先本人谈谈内推的看法.内推是公司招聘人才的 ...