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++框架《二:大包处理过程》
本来这一篇是打算写包头在分布式平台中的具体变换过程的.其实文章已经写好了.但是想了这个应该是不能随便发表的.毕竟如果知道了一个包的具体每个字节的意义.能伪造包来攻击系统.其次来介绍一个包的具体变换过程 ...
随机推荐
- 聪明的kk
聪明的kk 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 聪明的"KK" 非洲某国展馆的设计灵感源于富有传奇色彩的沙漠中陡然起伏的沙丘.体现出本 ...
- Java彻底 - WEB容器的侦听具体解释 ServletContextListener
WEB容器的侦听器ServletContextListener主要用于监测容器启动和 当破坏需要做一些操作,听众将能够使用此做. ServletContextListener在Spring开始,然后再 ...
- 数据你把它的金额-JAVA分页
数据量你造吗-JAVA分页 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...
- [Python]新手写爬虫全过程(转)
今天早上起来,第一件事情就是理一理今天该做的事情,瞬间get到任务,写一个只用python字符串内建函数的爬虫,定义为v1.0,开发中的版本号定义为v0.x.数据存放?这个是一个练手的玩具,就写在tx ...
- 代码配置没有问题,为什么不回滚事务(要理解Mysql数据库引擎)
在发展的前几天遇到的问题,在调试过程中发现配置service本次交易不工作层,更新后数据库抛出异常或成功,交易不会回滚.随后开始了各种检查,视图spring的事务是否配置正确,进入更新方法时是否开启了 ...
- SQL入门学习5-函数、为此、CASE表达式
6-1. 各种各样的函数 函数的种类 算数函数 字符串函数 日期函数 转换函数 聚合函数 1.1算术函数 数据类型:NUMERIC 是大多数DBMS都支持的一种数据类型. 通过NUMBERIC(全体位 ...
- PC远程调试设备(转)
我们在移动端进行前端开发时,会遇到一个让人头痛但不得不面对的问题——调试. 在 PC 机器上,我们有功能强大的 Chrome DevTools.Firebug,即便是老版本的 IE ,我们也可以安装微 ...
- Android.9图片评论(一个)
什么是.9图片 至于什么是.9图片这里就简单提一下,即图片后缀名前有.9的图片,如pic.9.png.pic1.9.jgp,诸如此类的图片就称为.9图片. .9图片的作用 ①.9图片的作用是在图片拉伸 ...
- Log4NET 数据库
阅读目录 Log4NET简介 前提 详细步骤 回到顶部 Log4NET简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种 ...
- python 3.4.0 简单的print 'hello world',出错--SyntaxError: invalid syntax
问题描写叙述: win7下安装的python 3.4.0版本号, 在命令行里写入简单的输出语句: print 'hello world' 然后enter,结果返回结果为: SyntaxError: i ...