在用selenium做自動化測試時,由于各種不明原因,有時Chrome瀏覽器會出現假死的情況,也就是整個瀏覽器響應超時,本人腳本主要部署在Windows機器上,所以主要以Windows為主,瀏覽器為Chrome,即如下圖所示
或者由于被測頁面彈出alert彈框,程序沒有做此處理,導致程序響應超時,瀏覽器無法關閉,當用jenkins上再次執行job時就會報錯,即
如果出現這種問題,怎么處理呢,很簡單直接去任務管理器,關閉chromedriver.exe這個進程即可,以及chrome.exe,當然,如果你辦公方便,可以手動去關,但是萬一你不在公司或者無法即時處理時怎么辦呢?
不多說,直接上代碼
1 import java.io.ByteArrayOutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.util.Properties; 5 6 /** 7 * 檢測chrome和chromedriver進程 8 * 9 * @author 作者:jinzy 10 * @version 創建時間:2018年1月10日 下午2:59:32 類說明: 11 */ 12 public class CloseProcess { 13 14 public static void main(String[] args) { 15 // TODO Auto-generated method stub 16 findProcess("chrome.exe"); 17 findProcess("chromedriver.exe"); 18 } 19 20 /** 21 * 檢測程序。 22 * 23 * @param processName 24 * 線程的名字,請使用準確的名字 25 * @return 找到返回true,沒找到返回false 26 */ 27 public static boolean findProcess(String processName) { 28 boolean flag = false; 29 Properties props = System.getProperties(); 30 try { 31 if (props.getProperty("os.name").contains("Windows")) { 32 Process p = Runtime.getRuntime().exec("cmd /c tasklist "); 33 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 34 InputStream os = p.getInputStream(); 35 byte b[] = new byte[256]; 36 while (os.read(b) > 0) { 37 baos.write(b); 38 } 39 String s = baos.toString(); 40 if (s.indexOf(processName) >= 0) { 41 Runtime.getRuntime().exec("taskkill /im " + processName + " /f"); 42 flag = true; 43 } else { 44 flag = false; 45 } 46 }else { 47 Process p = Runtime.getRuntime().exec(new String[]{"sh","-c","ps -ef | grep "+processName}); 48 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 49 InputStream os = p.getInputStream(); 50 byte b[] = new byte[256]; 51 while (os.read(b) > 0) { 52 baos.write(b); 53 } 54 String s = baos.toString(); 55 if (s.indexOf(processName) >= 0) { 56 String[] cmd ={"sh","-c","killall -9 "+processName}; 57 Runtime.getRuntime().exec(cmd); 58 flag = true; 59 } else { 60 flag = false; 61 } 62 } 63 } catch (IOException ioe) { 64 } 65 return flag; 66 } 67 }
? 可以將此代碼放到項目中或者直接打包成jar包,配置在jenkins中使用,jenkins中配置如下
?