selenium之多线程启动grid分布式测试框架封装(二)
五、domain类创建
在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息。
package com.lingfeng.domain; public class RemoteLanchInfo {
private String id;
private String name;
private String address; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }
这个javabean就是用来保存一条配置文件中的启动信息,后面会将这个javabean封装到集合中,以后需要到这些信息的时候调用起来也方便,比如碰到了IE6哪个页面不兼容,就可以使用名称来进行截图文件的命名,这样就知道了是哪个浏览器出了问题。
六、工具类,远程服务配置文件初始化类
在utils包中创建java类RemoteServerInit.java
package com.lingfeng.utils; import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver; import com.lingfeng.domain.RemoteLanchInfo; /**
* 远程服务器初始化类
* @author 凌风
*
*/
public class RemoteServerInit {
//存储读取配置文档
private static Document DOCUMENT;
//存储所有状态为on的远程服务端信息
private static Map<String,RemoteLanchInfo> allLaunchInfoMap = new HashMap<String,RemoteLanchInfo>();
//存储所有远程服务端浏览器启动的driver
private static Map<String,WebDriver> allLaunchDriverMap = new HashMap<String, WebDriver>(); //在调用launchBrowser方法后,可用此方法获取到所有远程服务端的driver
public static Map<String,WebDriver> getAllLaunchDriverMap(){
return allLaunchDriverMap;
}
//在调用launchBrowser方法后,可用此方法获取到所有远程服务端的启动信息。
public static Map<String,RemoteLanchInfo> getAllLaunchInfoMap(){
return allLaunchInfoMap;
} public static void launchBrowser() throws DocumentException, MalformedURLException{ File file = new File("src/RemoteServerLaunchInfo.xml");
DOCUMENT = readInitFile(file);
List<Element> servers = getAllRemoteServers(DOCUMENT);
Iterator<Element> it = servers.iterator();
while(it.hasNext()){
addWebDriver(allLaunchDriverMap,it);
} } /**
* 将启动信息以及相对应的driver存储到各自的map集合中
*
* @param allLaunchDriverMap
* @param it
* @throws MalformedURLException
*/
private static void addWebDriver(
Map<String, WebDriver> allLaunchDriverMap, Iterator<Element> it) throws MalformedURLException {
Element e = it.next(); String remoteAddress = e.getText();
String remoteID = e.attributeValue("ID");
String remoteName = e.attributeValue("name"); //将启动的所有信息存储到javabean当中。
RemoteLanchInfo info = setRemoteLanchInfo(remoteAddress,remoteID,remoteName);
allLaunchInfoMap.put(remoteName, info);//启动的信息放到map集合中 DesiredCapabilities desiredCapabilities = DesiredCapabilities.internetExplorer();
WebDriver driver = new RemoteWebDriver(new URL(remoteAddress), desiredCapabilities);
allLaunchDriverMap.put(remoteName, driver);
} /**
* 设置远程启动信息,作为一个作为一个对象保存到map集合中
* @param remoteAddress
* @param remoteID
* @param remoteName
* @return RemoteLanchInfo 远程启动信息
*/
private static RemoteLanchInfo setRemoteLanchInfo(String remoteAddress,
String remoteID, String remoteName) { RemoteLanchInfo info = new RemoteLanchInfo();
info.setAddress(remoteAddress);
info.setId(remoteID);
info.setName(remoteName);
return info;
} public static String getHomepage(){
return DOCUMENT.getRootElement().elementText("homepage");
}
/**
* 将所有配置文件中的remote-server标签对象存储到list集合中
* @param document
* @return List<Element> 存储一个remote-server标签对象的一个集合。
*/
private static List<Element> getAllRemoteServers(Document document) {
List<Element> servers = new ArrayList<Element>();
List<Element> list = document.getRootElement().elements("remote-server");
Iterator<Element> it = list.iterator(); while(it.hasNext()){
Element element = (Element) it.next();
if(element.attributeValue("status").equals("on")){
servers.add(element);
}
}
return servers;
}
/**
* 读取配置文件,返回文件
* @param file
* @return Document
* @throws DocumentException
*/
public static Document readInitFile(File file) throws DocumentException {
SAXReader reader = new SAXReader();
return reader.read(file);
}
}
未完待续!!!马上奉上!!!
selenium之多线程启动grid分布式测试框架封装(二)的更多相关文章
- selenium之多线程启动grid分布式测试框架封装(四)
九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.n ...
- selenium之多线程启动grid分布式测试框架封装(一)
一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下:
- selenium之多线程启动grid分布式测试框架封装(三)
七.工具类,线程监控器类创建 utils包中,创建java类:RemoteThreadStatusMonitor.java package com.lingfeng.utils; /** * 此监控器 ...
- Selenium Grid分布式测试入门详解
本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...
- Pytest测试框架(二):pytest 的setup/teardown方法
PyTest支持xUnit style 结构, setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性.pytest的setup/teardown方法包括:模 ...
- python pytest测试框架介绍二
在介绍一中简单介绍了pytest的安装和简单使用,接下来我们就要实际了解pytest了 一.pytest的用例发现规则 pytest可以在不同的函数.包中发现用例,发现的规则如下 文件名以test_开 ...
- Selenium Grid分布式测试环境搭建
Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...
- Jmeter分布式测试搭建(二)
Jmeter运行的时候十分耗内存和cpu,跑到500多个进程的时候,就卡死了.我们测试时,如果进行大数据量的并发测试时,单个电脑的CPU和内存可能无法承受,这个时候,我们需要进行一个分布式的测试,比如 ...
- 大型分布式C++框架《二:大包处理过程》
本来这一篇是打算写包头在分布式平台中的具体变换过程的.其实文章已经写好了.但是想了这个应该是不能随便发表的.毕竟如果知道了一个包的具体每个字节的意义.能伪造包来攻击系统.其次来介绍一个包的具体变换过程 ...
随机推荐
- QR代码简单
QR代码(Quick Response Code, 高速响应码)属于二维矩阵码在一个.由DENSO(日本电装)公司开发,由JIS和ISO将其标准化. QR码分为两种模式:模式1.模式2.当中.模式1相 ...
- BZOJ 2947 Poi2000 促销 set
标题效果:特定n天,首先插入一些每天.然后去掉最高值和最低值,要付出最大的值-至少值价格.乞讨n总天数支付的价格 堆/段树/平衡树光秃秃的标题 #include <set> #includ ...
- how tomcat works 札记(两)----------一个简单的servlet集装箱
app1 (看着眼前这章建议读者,看how tomcat works 札记(一个)----------一个简单的webserver http://blog.csdn.net/dlf123321/art ...
- 学生表sid,sname,结果表cid,cname,学生成绩表sid,cid,cscore,最高要求的分数输出候补课程专门命名
--1.建表SQL: --学生表: -- Createtable createtable STUDENT ( SID NUMBERnotnull, SNAME NVARCHAR2) ) table ...
- Model绑定
Model绑定 在前面的几篇文章中我们都是采用在URI中元数据类型进行传参,实际上ASP.NET Web API也提供了对URI进行复杂参数的绑定方式--Model绑定.这里的Model可以简单的理解 ...
- Java Date API demo
package date; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; /*2015- ...
- Hadoop Streaming 得到mapreduce_map_input_file中遇到的问题的版本号
1.Hadoop Streaming,您可以在任务获得hadoop设置环境变量, 例如,使用awk书面map从而能获得:filename = ENVIRON["mapreduce_map_i ...
- 我的MYSQL学习心得(一)
原文:我的MYSQL学习心得(一) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL ...
- HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作
http://www.ibm.com/developerworks/cn/web/1210_jiangjj_html5db/ 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 向西项目管理工具Maven一片
前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...