selenium Grid(一)
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(一)的更多相关文章
- 搭建selenium grid简单配置
1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- Selenium Grid 学习笔记
Selenium Grid 学习笔记http://www.docin.com/p-765680298.html
- 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 ...
- selenium Grid
Selenium Grid 的机制是启动一个 hub,然后启动多个 Selenium RC 注册到 hub 上, 当测试请求到 hub 时,hub 会将测试分发给 Selenium RC, Selen ...
- selenium grid java 资料
Grid TestNG: 使用Selenium Grid改进Web应用程序的测试: http://www.ithov.com/server/117464.shtml
- Selenium Grid跨浏览器-兼容性测试
Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...
- selenium grid的使用与配置
一.selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测 ...
- 转:Selenium Grid深入学习
应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子. 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub ...
随机推荐
- Android布局优化之include、merge、ViewStub的使用
本文针对include.merge.ViewStub三个标签如何在布局复用.有效减少布局层级以及如何可以按需加载三个方面进行介绍的. 复用布局可以帮助我们创建一些可以重复使用的复杂布局.这种方式也意味 ...
- 解决VS2012新建MVC4等项目时,收到加载程序集“NuGet.VisualStudio.Interop…”的错误
初装V2012,新建MVC4新项目时出现以下错误: 解决方法为: 通过VS2012的“工具-扩展和更新-联机”安装“NuGet Package Manager”扩展包,可以顺利新建MVC4项目啦!
- Android,iOS,浏览器打开手机QQ与指定用户聊天界面
在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服QQ使用.而在移动端腾讯貌似没有公布提供类似API,但是却可以使用schema模式来启动手机QQ. 以下为具体代码: 浏览器(包括手机浏览 ...
- Displaying Alerts with UIAlertView
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"You've ...
- Struts2 学习笔记 11 Result part2
之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...
- quickstack is a tool to take call stack
https://github.com/yoshinorim/quickstack quickstack is a tool to take call stack traces with minimal ...
- python源码解析
http://blog.csdn.net/balabalamerobert/article/category/168910
- 修改mac os分辨率(VMware)
转自:http://hi.baidu.com/hehonglei123/item/55591c17e7991d582a3e22a1 1. 在Mac系统中安装VMsvga2:VMsvga2_v1.2.3 ...
- 如何通过VIM把代码格式化后生成HTML网页代码
本文转自http://wangxiaoyu.blog.51cto.com/922065/203471 需求及思路:演示需要,需要网站上嵌入一些代码,我的建议做法是根据代码文件,生成相应的HTML代码, ...
- java_有返回值线程_提前加载例子
package com.demo.test3; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionE ...