Windows和Linux如何使用Java代码实现关闭进程

  在用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中配置如下

 

转载于:https://www.cnblogs.com/mrjade/p/8289034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值