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();
	}
	
	
}

  这篇博文中的这两个类全都是创建多线程的类,就是第一篇文章中的监控线程以及运行线程 ,打印的调试代码可自行去掉。

 

未完待续!!!马上奉上!!!

 

posted @ 2015-02-13 15:13  大周的技术屋  阅读(1263)  评论(0编辑  收藏  举报