selenium grid Quick Start

selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。

1、启动Selenium-Server

1)下载 selenium-server-standalone-*.jar,地址:http://selenium-release.storage.googleapis.com/index.html?path=2.41/

2)启动selenium server并注册hub  (假设hub服务器机器selenium-server版本为2.41,本机IP为192.32.50.26)

到selenium-server-standalone-*.jar 包放置目录下执行:java -jar selenium-server-standalone-2.41.0.jar -role hub -port 4441  (未指定port时,hub默认4444)

3)本地或者远程机器, 都可以启动多个node

a.本地启动:

默认: java -jar selenium-server-standalone-2.41.0.jar -role node            (默认的注册地址:http://localhost:4444/grid/register,node默认端口:5555)

指定hub: java -jar selenium-server-standalone-2.41.0.jar -role node  -hub http://localhost:4441/grid/register

b.远程启动:

远程同样需要下载selenium-Server jar包,启动如下:  (假设远程版本为2.29)

java -jar selenium-server-standalone-2.29.0.jar -role node -hub http://192.32.50.26:4441/grid/register -Dwebdriver.chrome.driver=chromedriver29.exe  -browser browserName=chrome  -port 6666

2、具体应用

public class RemoteWebDriverDesiredCapTest {
@Test
public void myTest() throws MalformedURLException{
/**
* 1、本地机器启动了主节点hub (假設本台机器IP:192.32.50.26,http://localhost:4444/grid/console 查看节点连接情况)
* java -jar selenium-server-standalone-2.41.0.jar -role hub (默认端口4444)
* 2、本地也启动了一个该hub 次节点A
* java -jar selenium-server-standalone-2.41.0.jar -role node
* (默认的注册地址:http://localhost:4444/grid/register,node默认端口:5555)
* (具体设置:java -jar selenium-server-standalone-2.41.0.jar -role node -port 5556 -hub http://localhost:4441/grid/register)
* 3、本机器装有firefox, chrome,所以通过该次节点A, 可以用firefox来运行脚本, 也可以用chrome
* FF驱动默认在webDriver中了, 而chrome驱动需要自己指定, chromeDriver.exe ,运行chromeDriver(默认使用端口9515)
*/

//node:java -jar selenium-server-standalone-2.41.0.jar -role node
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setPlatform(Platform.VISTA);
WebDriver driver = new RemoteWebDriver(new URL("http://192.32.50.26:5555/wd/hub"), capability);
driver.get("http://www.baidu.com");
System.out.println(driver.getCurrentUrl());
driver.quit(); // node: 直接运行chromedriver.exe时, 通过http://xxx.xxx.xxx.xxx:9515 就可以取得chrome; 或者像 下面指定-Dwebdriver.chrome.driver -port,形式
DesiredCapabilities aDesiredcap =new DesiredCapabilities("chrome","",Platform.VISTA);
WebDriver wd = new RemoteWebDriver(new URL("http://localhost:9515"), aDesiredcap);
wd.get("https://code.google.com/p/selenium/wiki/Grid2");
System.out.println(wd.getCurrentUrl());
wd.quit(); //node:java -jar selenium-server-standalone-2.41.0.jar -role node -hub http://192.32.50.26:4444/grid/register -Dwebdriver.ie.driver=IEDriverServer.exe -browser browserName=iexplore -port 7776
DesiredCapabilities iDesiredcap =new DesiredCapabilities("iexplore","",Platform.VISTA);
WebDriver wdE = new RemoteWebDriver(new URL("http://192.32.50.26:7776/wd/hub"), iDesiredcap);
wdE.get("https://code.google.com/p/selenium/wiki/Grid2");
System.out.println(wdE.getCurrentUrl());
wdE.quit(); //用另一台机器作为次节点连接 , (假設IP為: 192.32.52.51 )
//java -jar selenium-server-standalone-2.29.0.jar -role node -hub http://192.32.50.26:4444/grid/register -Dwebdriver.chrome.driver=chromedriver29.exe -browser browserName=chrome -port 6666
DesiredCapabilities chrome =new DesiredCapabilities("chrome","",Platform.XP);
WebDriver driverChrome = new RemoteWebDriver(new URL("http://192.32.52.51:6666/wd/hub"), chrome);
driverChrome.get("http://www.cnblogs.com/");
driverChrome.quit();
}
}

3、做成多线程方式

Selenium Grid只是提供多系统、多浏览器的执行环境,而不是说任务一个test case丢给它就能并行运行。并行的运行我这里就交给testng了

如下代码和配置:

1)testcase 代码:

package com.jennifer.test;

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class GridParallelTests {
private WebDriver dr;
DesiredCapabilities desireCap; @Parameters({ "browser", "nodeUrl"})
@BeforeMethod
public void setUp(String browser, String nodeUrl) {
if (browser.equals("ie")){
desireCap = DesiredCapabilities.internetExplorer();
}
else if (browser.equals("ff"))
desireCap = DesiredCapabilities.firefox();
else if (browser.equals("chrome"))
desireCap = DesiredCapabilities.chrome();
else
System.out.println("browser parameter wrong , can only be :ie、 ff、chrome"); String url = nodeUrl + "/wd/hub";
URL urlInstance = null;
try {
urlInstance = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
dr = new RemoteWebDriver(urlInstance, desireCap);
} @Test
public void test() {
dr.get("http://www.baidu.com/");
dr.findElement(By.id("kw1")).sendKeys("selenium");
dr.findElement(By.id("su1")).click();
System.out.println("title:" + dr.getTitle());
}
@AfterMethod
public void quit() {
dr.close();
}
}

2)testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite1" parallel="tests" thread-count="5">
<test name="test1">
<parameter name="browser" value="ff" />
<parameter name="nodeUrl" value="http://192.32.50.26:5555"/>
<classes>
<class name="com.jennifer.test.GridParallelTests"></class>
</classes>
</test> <test name="test2">
<!-- java -jar selenium-server-standalone-2.41.0.jar -role node -hub http://192.32.50.26:4444/grid/register -Dwebdriver.chrome.driver=chromedriver29.exe -browser browserName=chrome -port 6666 -->
<parameter name="browser" value="chrome" />
<parameter name="nodeUrl" value="http://192.32.50.26:6666" />
<classes>
<class name="com.jennifer.test.GridParallelTests"></class>
</classes>
</test> <test name="test3">
<!-- java -jar selenium-server-standalone-2.41.0.jar -role node -hub http://192.32.50.26:4444/grid/register -Dwebdriver.ie.driver=IEDriverServer.exe -browser browserName=iexplore -port 7776 -->
<parameter name="browser" value="ie" />
<parameter name="nodeUrl" value="http://192.32.50.26:7776" />
<classes>
<class name="com.jennifer.test.GridParallelTests"></class>
</classes>
</test>
</suite>

selenium Grid(一)的更多相关文章

  1. 搭建selenium grid简单配置

    1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...

  2. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  3. Selenium Grid 学习笔记

    Selenium Grid 学习笔记http://www.docin.com/p-765680298.html

  4. Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities

    Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...

  5. selenium Grid

    Selenium Grid 的机制是启动一个 hub,然后启动多个 Selenium RC 注册到 hub 上, 当测试请求到 hub 时,hub 会将测试分发给 Selenium RC, Selen ...

  6. selenium grid java 资料

    Grid TestNG: 使用Selenium Grid改进Web应用程序的测试: http://www.ithov.com/server/117464.shtml

  7. Selenium Grid跨浏览器-兼容性测试

    Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...

  8. selenium grid的使用与配置

    一.selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测 ...

  9. 转:Selenium Grid深入学习

    应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子. 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub ...

随机推荐

  1. 小菜学习MVC4-WebApi

    今天想看下MVC4的东西,发现 居然有WebApi这东西,百度了一下..居然是 WCF中的东西,然后移植到了MVC4中,WCF你懂得返回数据都是xml,向网站这种请求 就比较纠结...而webapi可 ...

  2. C#实现汉诺塔问题

    汉诺塔的由来:汉诺塔是源自印度神话里的玩具.上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且 ...

  3. w3cmark前端精彩博文周报 10.13-10.19

    w3cmark推出每周精选前端博文推荐,通过阅读别人的代码,学习别人的经验,提升自己的水平.欢迎关注 @前端笔记网 微博.其实如果是关注我们微博的朋友都对下面的文章熟悉,因为我们会一旦发现有价值的.精 ...

  4. delphi treeview 鼠标移动显示hint信息

    procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState;   X, Y: Integer); var   Nod ...

  5. Proteus仿真_01、 8086 IO译码仿真

    最近在学习一些微机原理与接口技术方面的知识. 参考书籍<微机原理与接口技术---基于8086Proteus仿真> 顾晖 梁惺彦 编著 实验一.利用8086 芯片来实现对I/O设备的读取和控 ...

  6. ios开发——实用技术篇OC篇&获取设备唯一标识

    获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...

  7. C语言--enum,typedef enum 枚举类型详解

    原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环 ...

  8. 简化版可用于多线程的logger

    logger 嘛要高效,要简单.废话不多话. GitHub 地址 https://github.com/goldli/logger 本文所说的logger使用System.Logger做为NameSp ...

  9. HTML转换成word文档

    1工具类保存word文件 public class WordAction { public static void SaveAsWord(string fileName, string pFileNa ...

  10. Fliptile

      开关题   尺度法  Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3394   Accepted:  ...