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)