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中配置如下
Change the world by program.
文章转载请标明出处,如果,您认为阅读这篇博客让您有些收获,不妨点击一下推荐按钮,据说喜欢分享的,后来都成了大神
我国每年都有2000万人得胃炎,胃癌,很大一部分原因是没有及时吃早餐。
支付宝早餐计划,每年发放20亿早餐补贴来鼓励您及时吃早餐。打开支付宝首页搜:510050164,或 点击领取支付宝红包 领取补贴,用于早餐消费,答应我,好好照顾自己。
复制【Y:/OUvlEf4647u 或复制此消息打开支付宝,建议使用支付宝收💰码。 $140 X@h.GOBM W:/D】打开支付宝,申请支付宝收钱码,更快更便捷,或 点击图片,使用支付宝扫码,领取支付宝收钱码
欢迎扫码关注微信公众号 | 欢迎扫码加入QQ交流群 | 欢迎扫码加入微信交流群 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步