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

  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. 真实故事:网站遭遇DOS攻击

     网站遭遇DOS攻击 一个.事件背景 长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停.越是节假日,越可能出大问题,以下要讲述的就是一起遭受DOS攻击的案例. 春节长假刚过完,小李 ...

  2. java内存分析总结

    1.自带的jconsole工具. (1)假设是从命令行启动,使 JDK 在 PATH 上,执行 jconsole 就可以. (2)假设从 GUI shell 启动,找到 JDK 安装路径,打开 bin ...

  3. RFC 协议下载方法

    rfc官方网站:http://tools.ietf.org 举例说明: RFC7230是HTTP 1.1协议,此文档的URL为:http://tools.ietf.org/html/rfc7230 你 ...

  4. Unity项目优化--开发项目的小经验

    原文地址:http://blog.csdn.net/liang_704959721/article/details/8548619 我们主要使用 3dsmax2010 进行制作,输出 FBX的类型导入 ...

  5. 远程访问mysql(转)

    GRANT ALL PRIVILEGES ON *.* TO '<username>'@'<remote addr or %(for all ip addr)>'IDENTIF ...

  6. 用Owin Host实现脱离IIS跑Web API单元测试

    开发笔记:用Owin Host实现脱离IIS跑Web API单元测试   今天在开发一个ASP.NET Web API项目写单元测试时,实在无法忍受之前的笨方法,决定改过自新. 之前Web API的单 ...

  7. MBProgressHUD 问题

    1.MBProgressHUD *HUD = [[MBProgressHUD alloc] initWithWindow:[UIApplication sharedApplication].keyWi ...

  8. AngularJS与ASP.NET MVC登录超时解决方案

    问题: 1.在Action中判断Ajax请求的方法Request.IsAjaxRequest()始终是false 2.返回给前台StatusCode和HttpUnauthorizedResult,前台 ...

  9. Android开发新手教程--Android应用程序结构

    一.新HelloWorld工程: 1.打开Eclipse.点击"File"->"New"->"Project"-Android ...

  10. crawler_基础之_httpclient 访问网络资源

    先粘贴一个 简单版的,后期再修改 pom文件 <dependency> <groupId>org.apache.httpcomponents</groupId> & ...