selenium之多執行緒啟動grid分散式測試框架封裝(三)

凌.風發表於2015-02-13

七、工具類,執行緒監控器類建立

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

  這篇博文中的這兩個類全都是建立多執行緒的類,就是第一篇文章中的監控執行緒以及執行執行緒 ,列印的除錯程式碼可自行去掉。

 

未完待續!!!馬上奉上!!!

 

相關文章