七、工具类,线程监控器类创建
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(); } }
这篇博文中的这两个类全都是创建多线程的类,就是第一篇文章中的监控线程以及运行线程 ,打印的调试代码可自行去掉。
未完待续!!!马上奉上!!!
时间: 2024-11-05 12:23:08