七、工具類,執行緒監控器類建立
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(); } }
這篇博文中的這兩個類全都是建立多執行緒的類,就是第一篇文章中的監控執行緒以及執行執行緒 ,列印的除錯程式碼可自行去掉。
未完待續!!!馬上奉上!!!