selenium之多线程启动grid分布式测试框架封装(三)
七、工具类,线程监控器类创建
utils包中,创建java类:RemoteThreadStatusMonitor.java
package com.lingfeng.utils; /**
* 此监控器方法很重要,如果没有,那么将导致jvm退出,所有远程工作的线程全部抛出异常。
* @author 凌风
*
*/
public class RemoteThreadStatusMonitor implements Runnable { private String driverName;
private Thread thread;
private static int deadThreadCount = 0;//记录已结束的线程数量。
public static int getDeadThreadCount(){
return deadThreadCount;
} public RemoteThreadStatusMonitor (String driverName,Thread thread){
this.driverName=driverName;
this.thread = thread;
} @Override
public void run() {
//判断线程是否还存活
while(thread.isAlive()){} deadThreadCount++;
System.out.println(driverName+"运行结束"); }
}
其中包含打印的调试代码,可自行去掉
八、测试代码,远程服务打开百度首页selenium代码
staticPage包中创建java类:RemoteServerOpenHomepage
package com.lingfeng.staticPage; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import com.lingfeng.utils.RemoteServerInit; public class RemoteServerOpenHomepage implements Runnable { private WebDriver driver;
//此方法用来存储启动的浏览器名字,用于以后的脚本用bug截图的名字设置等。
private String driverName; public RemoteServerOpenHomepage(WebDriver driver,String driverName){
this.driver = driver;
this.driverName=driverName;
} /**
* 覆盖run方法,将所有需要运行脚本的入口都可以写在此方法中,进行多线程的调用。
*/
@Override
public void run() {
int i = 1;
while(i<=3){
String url = RemoteServerInit.getHomepage();
driver.get(url);
driver.findElement(By.id("kw")).sendKeys("haha");
driver.findElement(By.id("su")).click();
System.out.println(driverName+"====="+i+"次启动");
i++;
}
driver.close();
} }
这篇博文中的这两个类全都是创建多线程的类,就是第一篇文章中的监控线程以及运行线程 ,打印的调试代码可自行去掉。
未完待续!!!马上奉上!!!
selenium之多线程启动grid分布式测试框架封装(三)的更多相关文章
- selenium之多线程启动grid分布式测试框架封装(四)
九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.n ...
- selenium之多线程启动grid分布式测试框架封装(一)
一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下:
- selenium之多线程启动grid分布式测试框架封装(二)
五.domain类创建 在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息. package com.lingfeng.domain; public class Re ...
- Selenium Grid分布式测试入门详解
本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...
- Pytest测试框架(三):pytest fixture 用法
xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...
- Selenium Grid分布式测试环境搭建
Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...
- python pytest测试框架介绍三
之前介绍了pytest以xUnit形式来写用例,下面来介绍pytest特有的方式来写用例 1.pytest fixture实例1 代码如下 from __future__ import print_f ...
- 大型分布式C++框架《三:序列化与反序列化》
一.前言 个人感觉序列化简单来说就是按一定规则组包.反序列化就是按组包时的规则来接包.正常来说.序列化不会很难.不会很复杂.因为过于复杂的序列化协议会导致较长的解析时间,这可能会使得序列化和反序列化 ...
- e2e测试框架之Cypress
谈起web自动化测试,大家首先想到的是Selenium!随着近几年前端技术的发展,出现了不少前端测试框架,这些测试框架大多并不依赖于Selenium,这一点跟后端测试框架有很大不同,如Robot Fr ...
随机推荐
- codeigniter 该脚本在运行300s超时退
直接看代码, file:system/core/CodeIgniter.php /* 102 * -------------------------------------------------- ...
- 跟着辛星认识一下PHP的自己主动载入
作为一个框架,文件的载入机制是不能少的,那么我们应该怎么载入呢,这些PHP已经给我们想好了,所以我们仅仅须要依照规则办事就能够了,PHP中有两个函数能够完毕这个功能,第一个是__autoload,如今 ...
- 第一次QQ群视频教育有感
标题:第一次QQ群视频教育有感 作者:丁又专, 时间:2014.08.16 教育的目的:启示学生心智,发现个人优势,激发探索欲望. 今天早上看到 中国大学MOOC<文献管理与信息 ...
- UVA 12538 Version Controlled IDE 解题报告
题意:给三种操作 1.在p位置插入一个字符串. 2.从p位置开始删除长度为c的字符串 3.输出第v个历史版本中从p位置开始的长度为c的字符串 解法:可以用平衡树做,但是不会.后来又听说可一用一个叫ro ...
- Linux 字符驱动程序(一)
Linux 字符驱动程序(一) 于linux有三个主要的内核设备: 1 字符设备: •字符设备的读写以字节为单位,存取时没有缓存. •对字符设备发出读写请求时.实际的硬件I/ ...
- RDIFramework.NET ━ .NET高速信息系统开发框架钜献 V2.9 版本震撼发布
RDIFramework.NET ━ .NET高速信息化系统开发框架钜献 V2.9 版本号震撼公布 全新体验.全新感觉.2015钜献! 继上个版本号"RDIFramework.NET V2 ...
- 泛泰A900 刷4.4中国民营TWRP2.7.1.1版本 支持自己主动识别移动版本号(世界上第一)
因本人手上的A900S已砖, 所以临时弄不了ROM了. 先上传之前已经弄好的刷4.4专用的新版TWRP recovery 2.7.1.1 这个版本号是我自己定义的,为差别之前公布的2.7.0.0版( ...
- M、V、C
概述 Model-View-Controller(MVC),即模型-视图-控制器. MVC将软件系统分成三大部分:Model,View,Controller,三个部分通过某种机制通信 M.V.C的职能 ...
- Install Typical IIS Workloads
原文 Install Typical IIS Workloads Introduction The IIS 7.0 and above modular architecture is designed ...
- 错误 4 自定义工具错误: 无法生成服务引用“DepartMentService”的代码。请检查其他错
原文:错误 4 自定义工具错误: 无法生成服务引用"DepartMentService"的代码.请检查其他错 问题: 错误 4 自定义工具错误: 无法生成服务引用" ...