在用selenium做自动化测试时,由于各种不明原因,有时Chrome浏览器会出现假死的情况,也就是整个浏览器响应超时,本人脚本主要部署在Windows机器上,所以主要以Windows为主,浏览器为Chrome,即如下图所示

或者由于被测页面弹出alert弹框,程序没有做此处理,导致程序响应超时,浏览器无法关闭,当用jenkins上再次执行job时就会报错,即

  如果出现这种问题,怎么处理呢,很简单直接去任务管理器,关闭chromedriver.exe这个进程即可,以及chrome.exe,当然,如果你办公方便,可以手动去关,但是万一你不在公司或者无法即时处理时怎么办呢?

  不多说,直接上代码

  

 import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; /**
* 检测chrome和chromedriver进程
*
* @author 作者:jinzy
* @version 创建时间:2018年1月10日 下午2:59:32 类说明:
*/
public class CloseProcess { public static void main(String[] args) {
// TODO Auto-generated method stub
findProcess("chrome.exe");
findProcess("chromedriver.exe");
} /**
* 检测程序。
*
* @param processName
* 线程的名字,请使用准确的名字
* @return 找到返回true,没找到返回false
*/
public static boolean findProcess(String processName) {
boolean flag = false;
Properties props = System.getProperties();
try {
if (props.getProperty("os.name").contains("Windows")) {
Process p = Runtime.getRuntime().exec("cmd /c tasklist ");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream os = p.getInputStream();
byte b[] = new byte[256];
while (os.read(b) > 0) {
baos.write(b);
}
String s = baos.toString();
if (s.indexOf(processName) >= 0) {
Runtime.getRuntime().exec("taskkill /im " + processName + " /f");
flag = true;
} else {
flag = false;
}
}else {
Process p = Runtime.getRuntime().exec(new String[]{"sh","-c","ps -ef | grep "+processName});
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream os = p.getInputStream();
byte b[] = new byte[256];
while (os.read(b) > 0) {
baos.write(b);
}
String s = baos.toString();
if (s.indexOf(processName) >= 0) {
String[] cmd ={"sh","-c","killall -9 "+processName};
Runtime.getRuntime().exec(cmd);
flag = true;
} else {
flag = false;
}
}
} catch (IOException ioe) {
}
return flag;
}
}

  可以将此代码放到项目中或者直接打包成jar包,配置在jenkins中使用,jenkins中配置如下

Windows和Linux如何使用Java代码实现关闭进程的更多相关文章

  1. Java代码启动/关闭进程

    ProcessBuilder builder = new ProcessBuilder(命令,参数,参数...); Process process = builder.start(); br = ne ...

  2. 将linux上的Java代码上传到码云

    将linux上的Java代码上传到码云 1.在linux上直接输入命令获取git sudo apt-get install git 显示资源被占用,按照图中方法强制安装 2.建立与教材配套的目录结构 ...

  3. java代码中获取进程process id(转)

    另一方面,线程ID=进程ID+内部线程对象ID并不成立,    参考: blog.csdn.net/heyetina/article/details/6633901     如何在java代码中获取进 ...

  4. Windows、Linux及Mac查看端口和杀死进程

    本文介绍如何在Windows.Linux及Mac下查看端口和杀死进程. Windows下查看端口和杀死进程 查看占用端口号的进程号:netstat –ano | findstr "指定端口号 ...

  5. java代码开启关闭线程(nginx)

    源码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; pub ...

  6. linux 查看端口占用情况并关闭进程

    首先要搞清楚 linux 查看进程和查看端口是两个概念,一般来讲进程会有多个,而固定端口只会有一个. 1.查看进程 ,通常在使用 ps   命令后 用管道连接(ps -ef|grep  xxx ) 查 ...

  7. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  8. windows和linux下查看java安装路径

    windows下查看版本:(默认安装路径安装就不需要去配环境变量了) java -version windows下查看安装路径: java -verbose Linux下安装版本查看方式和window ...

  9. Windows和Linux下如何查看端口被哪个进程占用

    Windows: C:/Users/ewanbao>netstat -aon|findstr "123"  TCP    127.0.0.1:55123        0.0 ...

随机推荐

  1. php接口interface的使用

    接口是什么? 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有 ...

  2. timeline自适应时间轴

    近期项目一直有类似QQ空间那样的时间轴,来展示公司新闻动态,或者流程之类的设计UI. 每每出现,不以为然,这次总结了下,精简下 ================= ================== ...

  3. button的padding属性在i8下和chrome下表现不一致

    button的padding属性在i8下和chrome下表现不一致 在ie8下会撑破很多像素,撑破布局 padding: 10px 48px; padding: 1px 35px \0; /* pro ...

  4. STM32f103x IAP远程升级小结

    最近在面试的时候遇到一个关于IAP远程程序升级的问题,由于之前所做的项目没有涉及到远程升级需求,当时一脸懵呆,不过回答的还是不错的,今天针对STM32F103系列调试了IAP的程序,这里做一下小结,如 ...

  5. python3之socket&socketserver网络编程

    1.套接字与套接模块 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了 ...

  6. powershell V6.0登基之:《瘸腿脚本大帝进攻linux!》

    ------[前言]------ 每个ps大版本发布,我都会写个消息. 这次的,主标题就叫:powershell v6.0登基副标题就叫:<瘸腿脚本大帝进攻linux!> ------[p ...

  7. C# DataSet数据导入Excel 修正版- .net FrameWork 4.0以上

    引入  Microsoft.Office.Interop.Excel.dll 格式:标题加了下划线,单元格内容居中 1 using System; using System.Data; using S ...

  8. ssm maven spring AOP读写分离

    ssm maven spring AOP读写分离 总体流程 配置最开始写在pom.xml文件,解析到数据库配置文件,再解析到spring配置文件. 自定义注解DataSource:通过这个注解并且在s ...

  9. JavaProblem之hashCode详解

    一.HashCode简介 1.1.什么是Hash和Hash表 要想清楚hashCode就要先清楚知道什么是Hash 1)Hash hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来 ...

  10. Codeforces 842B Gleb And Pizza【几何,水】

    B. Gleb And Pizza time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...