七、工具类,线程监控器类创建

  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分布式测试框架封装(三)的更多相关文章

  1. selenium之多线程启动grid分布式测试框架封装(四)

    九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.n ...

  2. selenium之多线程启动grid分布式测试框架封装(一)

    一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下:

  3. selenium之多线程启动grid分布式测试框架封装(二)

    五.domain类创建 在domain包中创建类:RemoteLanchInfo.java 用来保存启动信息. package com.lingfeng.domain; public class Re ...

  4. Selenium Grid分布式测试入门详解

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  5. Pytest测试框架(三):pytest fixture 用法

    xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...

  6. Selenium Grid分布式测试环境搭建

    Selenium Grid简介 Selenium Grid实际上是基于Selenium RC的,而所谓的分布式结构就是由一个hub节点和若干个node代理节点组成.Hub用来管理各个代理节点的注册信息 ...

  7. python pytest测试框架介绍三

    之前介绍了pytest以xUnit形式来写用例,下面来介绍pytest特有的方式来写用例 1.pytest fixture实例1 代码如下 from __future__ import print_f ...

  8. 大型分布式C++框架《三:序列化与反序列化》

    一.前言  个人感觉序列化简单来说就是按一定规则组包.反序列化就是按组包时的规则来接包.正常来说.序列化不会很难.不会很复杂.因为过于复杂的序列化协议会导致较长的解析时间,这可能会使得序列化和反序列化 ...

  9. e2e测试框架之Cypress

    谈起web自动化测试,大家首先想到的是Selenium!随着近几年前端技术的发展,出现了不少前端测试框架,这些测试框架大多并不依赖于Selenium,这一点跟后端测试框架有很大不同,如Robot Fr ...

随机推荐

  1. POJ2352_Stars(段树/单点更新)

    解决报告 意甲冠军: 坐标.查找在数星星的左下角每颗星星. 思考: 横轴作为间隔,已知的输入是所述第一到y排序再次x次序.每次添加一个点来查询点x多少分离开坐标,然后更新点. #include < ...

  2. HDU3988-Harry Potter and the Hide Story(数论-质因数分解)

    Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 ...

  3. Visual Studio Team Services使用教程--邀请团队成员

  4. Robot Framework 使用1-环境配置及简单网站兼容性测试(转)

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  5. 设计管理员表;webservice用于网络安全的高端内提供服务的

    admin表设计.你应该有角色表,管理员属于一个样的作用,另一个接口选项,以查看表.角色有更多的选择的能力. 角色和选项代表了许多关系,因此,我们必须保持这种关系有一个表 版权声明:本文博客原创文章, ...

  6. socket-详细分析No buffer space available(转)

    新年上班第一天,突然遇到一个socket连接No buffer space available的问题,导致接口大面积调用(webservice,httpclient)失败的问题,重启服务器后又恢复了正 ...

  7. uva10067 Playing with Wheels 【建图+最短路】

    题目:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1008">uva10067 Play ...

  8. 82. NotesclientPrint相同的信息,以状态栏的问题

    这可能是一个小问题.但其他人也应该得到满足.在Notesclient使用LotusScript的Print当该语句是输出到状态栏,假设实际参数传递多次调用相同,状态栏将显示只有一次的信息. 例如: P ...

  9. 2款不同样式的CSS3 Loading加载动画 附源码

    原文:2款不同样式的CSS3 Loading加载动画 附源码 我们经常看到的Loading加载很多都是转圈圈的那种,今天我们来换一种有创意的CSS3 Loading加载动画,一种是声波形状的动画,另一 ...

  10. requireJS的使用_API-1

    requireJS的使用_API(1) 之前有介绍过requireJS(模块化开发),可以看看 ,但是不详细,所以今天参考官网来详细介绍一下: 1.加载js文件: RequireJS的目标是鼓励代码的 ...