转: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代码:
- package driver;
- 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 test;
- String baseUrl;
- @Parameters({"browser","nodeUrl","webSite"})
- @BeforeMethod
- public void setUp(String browser,String nodeUrl,String webSite){
- baseUrl = webSite;
- if(browser.equals("ie")) test = DesiredCapabilities.internetExplorer();
- else if(browser.equals("ff")) test = DesiredCapabilities.firefox();
- else if(browser.equals("chrome")) test = DesiredCapabilities.chrome();
- else System.out.println("browser参数有误,只能为ie、 ff、chrome");
- String url = nodeUrl + "/wd/hub";
- URL urlInstance = null;
- try {
- urlInstance = new URL(url);
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("实例化url出错,检查一下url格式是否正确,格式为:http://192.168.40.67:5555");
- }
- dr = new RemoteWebDriver(urlInstance,test);
- dr.get(webSite);
- }
- @Test
- public void test(){
- dr.get(baseUrl);
- dr.findElement(By.id("kw")).sendKeys("selenium");
- dr.findElement(By.id("su")).click();
- try {
- Thread.sleep(10000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println("title:"+dr.getTitle());
- }
- @AfterMethod
- public void quit(){
- dr.close();
- }
- }
testng.xml:
- <!DOCTYPE suite SYSTEM "http://beust.com/testng/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.168.40.67:5555"/>
- <parameter name="webSite" value="http://www.baidu.com"/>
- <classes>
- <class name="driver.GridParallelTests"></class>
- </classes>
- </test>
- <test name="test2">
- <parameter name="browser" value="chrome"/>
- <parameter name="nodeUrl" value="http://192.168.40.67:6666"/>
- <parameter name="webSite" value="http://www.baidu.com"/>
- <classes>
- <class name="driver.GridParallelTests"></class>
- </classes>
- </test>
- <test name="test3">
- <parameter name="browser" value="ie"/>
- <parameter name="nodeUrl" value="http://192.168.40.24:5555"/>
- <parameter name="webSite" value="http://www.baidu.com"/>
- <classes>
- <class name="driver.GridParallelTests"></class>
- </classes>
- </test>
- </suite>
运行testng.xml就可以了。
如果你是用ant把上面的参数传进去也是可以的。我这里就直接简单地放在testng.xml了。
转:Selenium Grid深入学习的更多相关文章
- Selenium Grid 学习笔记
Selenium Grid 学习笔记http://www.docin.com/p-765680298.html
- 学习selenium grid记录
1.找两台Windows系统,一个是A,作为Hub:一个是B,作为Node: 2.在A.B两台电脑分别下载selenium-server-standalone-2.48.0.jar,并放到指定目录 3 ...
- 搭建selenium grid简单配置
1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- 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 Quick Start selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成.hub用来管理各个代理节点的注册 ...
- 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 ...
随机推荐
- Openjudge-计算概论(A)-单词翻转
描述: 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入只有一行,为一个字符串,不超过500个字符.单词之间以空格隔开.输出翻转每一个单词后的字符串,单词之间的空格需与原文一致. 样例输入 ...
- laravel常用拓展库
1.laravel-dompdf:pdf生成器 git地址:https://github.com/barryvdh/laravel-dompdf 2.
- wordpress建站过程1
使用wordpress我们需要理解一些概念: 1.WordPress是一种使用PHP语言开发的博客平台,它的程序是由php构成的,所以想要使用word press必须会php. 2.Wordpress ...
- web开发——水到渠成
1.tomcat中设置编码格式: 打开server.xml,添加下面红色框框里面的内容.
- dialog弹出,点击back按键无法返回问题解决
今天阅读队友代码,调试代码中,发现对话框弹出点击back按键无法返回问题解决. 代码如下: /** * 单个按钮没有标题的弹框 * * @param context * @param content内 ...
- 【读书笔记】Linux源码注释
第二章 大概的内部组成 IO端口寻址: 统一寻址: 就是把地址归入存储器寻址范围. 独立寻址: 跟存储器分开,专门的寻址空间 没怎么理解, PC机一般都是采用独立寻址, 见下图 在linux里,可以在 ...
- html 框架属性
<html> <head> <title></title> </head> <frameset col ...
- hdu_2227_Find the nondecreasing subsequences_树状数组,离散化
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 题意:给你一个集合,让你求递增子序列有多少个,和树状数组求逆序对差不多,不过数据比较大,要离散化 ...
- lldpd-0.7.7代码解读(send_pdu部分)
此文档是经过逆序推到出的,可能有错误之处,敬请指教,谢谢. 1)interfaces_update 更新一些接口信息 2)levent_iface_subscribe 该接口通过socket通信(非阻 ...
- OpenCV ——双线性插值(Bilinear interpolation)
1,原理 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值,兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度 ...