博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows和Linux如何使用Java代码实现关闭进程
阅读量:6209 次
发布时间:2019-06-21

本文共 2769 字,大约阅读时间需要 9 分钟。

  在用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 作者:jinzy10  * @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 stub16         findProcess("chrome.exe");17         findProcess("chromedriver.exe");18     }19 20     /**21      * 检测程序。22      * 23      * @param processName24      *            线程的名字,请使用准确的名字25      * @return 找到返回true,没找到返回false26      */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

你可能感兴趣的文章
51、YUM安装配置LAMP、phpMyAdmin实战
查看>>
Yeslab现任明教教主ISE课程前七部分免费发布
查看>>
linux下恢复误删文件
查看>>
Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...
查看>>
RAID的肤浅认识
查看>>
poxtfix+dovecot+saslauthd+courier-authlib +mysql + extmail 完整虚拟邮箱系统部署
查看>>
Erlang并发机制 –进程调度
查看>>
XEN--转载自鸟哥的linux私房菜
查看>>
我的第一程序语言python
查看>>
DHCP服务开启了,为什么老是网络冲突
查看>>
跳出多重循环 JS
查看>>
MySql 自动更新时间为当前时间
查看>>
Configuring Aggregated Ethernet Interfaces
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Asp.net页面和Html页面之间的关系
查看>>
[故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
查看>>
MySQL之数据库对象查看工具mysqlshow
查看>>
关于大学生玩网络游戏的调查问卷
查看>>
ubuntu安装nodejs
查看>>