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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS之A标签

a标签&#xff0c;超级链接 a是英语anchor锚的意思。 a标签常用的就是三个属性&#xff1a; 1 <a href"网址" title"悬停文本" target"_blank">超级链接文字</a> 页面内的锚点&#xff0c;用name属性或者id属性 1 …

【pyqt5学习】——下拉框comboBox

# 向下拉框中添加选型&#xff0c;具体为在下拉框第index1个选型设置为内容name self.comboBox.addItem(name,index1) # 将下拉框中所有的选项删除 self.comboBox.clear() # 根据索引获取当前的下拉框内容 index self.comboBox.currentIndex() text self.comboBox.itemText(i…

安装scapy遇到的问题

1. Mac平台 在mac上安装scapy可以说是困难重重&#xff0c;一来因为scapy实在有些小众和老旧&#xff0c;再加上安装说明文档都是python2.5 也没有详细说明一些安装问题。 折腾了大概三个小时之后终于解决了这个老大难。 注&#xff1a;我的环境为anaconda2.3 - python2.7.10 一…

DAY5-小别-2018-1-15

有两天没有写了&#xff0c;前天考完试出去浪了&#xff0c;惭愧自己没有学习&#xff1b;昨天&#xff0c;启程回家看完了循环内容的视频&#xff0c;晚上十点半火车到站&#xff0c;没抽出时间写了&#xff0c;还看了《黑客帝国》&#xff0c;有点小感触&#xff0c;人工智能…

【文件处理】——Python pandas 写入数据到excel中

目录 1、创建一个新的excel表格 2、 获取写入excel的数据data 3、将data类型转换为pandas接受的类型 4、写入到excel中 5、保存excel 最终结果 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/11/9 23:18 # Author : linlianqin # Site : # File …

centerOS安装chkrootkit

Chkrootkit是一个在本地系统检查rootkit痕迹的工具&#xff0c;它是检查系统二进制文件是否被rootkit病毒修改的一个shell脚本。 &#xff08;1&#xff09;centerOS安装chkrootkit 安装gcc编译环境yum install gcc gcc-c make -y 安装chkrootkit.tar.gz 解压后执行 #make sens…

微软Visual Studio 2012软件功能介绍

对于从事.net程序开发的我们&#xff0c;都要用到C#依附的Visual Studio平台!Visual Studio是目前最流行的Windows平台应用程序开发环境。最新版本为 Visual Studio 2012 版本&#xff0c;基于 NET Framework4.5 。. Visual Studio 2012内置的测试工具可以帮助开发者打造高质量…

Spring Boot轻松理解动态注入,删除bean

2019独角兽企业重金招聘Python工程师标准>>> 我们通过getBean来获得对象,但这些对象都是事先定义好的,我们有时候要在程序中动态的加入对象.因为如果采用配置文件或者注解&#xff0c;我们要加入对象的话,还要重启服务,如果我们想要避免这一情况就得采用动态处理bea…

对象的深度克隆

最近在复习javascript&#xff0c;然而我的读书笔记&#xff0c;以及技术博客&#xff0c;已经转战cmd Markdown。所以这里就只写了一个对象的深度克隆方法&#xff1a; 这个克隆方法可以让我很深刻的了解到了js中&#xff0c;万物皆对象&#xff0c;对js有更深入的了解。转载于…

【pyqt5学习】——TextEdit属性,将滑条始终置于最后

法一&#xff1a; # 向文本框中添加字符串&#xff0c;自动换行&#xff0c;不会覆盖之前的内容 self.textEdit.append(datetime.datetime.strftime(datetime.datetime.now(),"%Y-%m-%D %H:%M:%S")" 共%d个文件&#xff0c;剩余%d个文件,耗时%.5f&#xff08;…

VS2012 中 c++项目中的各个选项介绍

MFC(Microsoft Foundation Classes)&#xff0c;是一个微软公司提供的类库&#xff08;class libraries&#xff09;&#xff0c;以C类的形式封装了Windows的API&#xff0c;并且包含一个应用程序框架&#xff0c;以减少应用程序开发人员的工作量。其中包含的类包含大量Windows…

Java基于springMVC的验证码案例

1 2 Java验证码案例&#xff08;基于springMVC方式&#xff09;3 4 验证码工具类5 package com.ekyb.common.util;6 7 import java.awt.Color;8 import java.awt.Font;9 import java.awt.Graphics;10 11 import java.awt.image.BufferedImage;12 import java.util.ArrayList;13…

eval函数的工作原理

eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的字符串&#xff0c;并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。 举例说明 eval评估JavaScript表达式var bar …

CMake使用入门

一、开胃菜 hello目录下的文件结构&#xff1a; ├── CMakeLists.txt ├── hello.c ├── hello.h └── main.c C代码见下节。 最简单的cmake配置文件&#xff1a; project(HELLO) set(SRC_LIST main.c hello.c) add_executable(hello ${SRC_LIST}) 如果要编译成gdb可调…

【pyqt5学习】——给窗口添加图标

from PyQt5.QtGui import QIcon# 当前文件的目录 self.dir os.path.dirname(os.path.abspath(__file__)) # 图标ico文件存放的绝对路径 icoPath self.dir r"\data\favicon.ico" # 添加图标 self.setWindowIcon(QIcon(icoPath))

C/C++语言变量声明内存分配

[cpp] view plaincopy<span style"font-family: Verdana, Arial, Helvetica, sans-serif; ">一个由c/C编译的程序占用的内存分为以下几个部分</span> 1、栈区&#xff08;stack&#xff09;— 程序运行时由编译器自动分配&#xff0c;存放函数的参数值…

sql server数据库实现保留指定位数小数的函数

有时候需要对一个特定的含有小数点的数字保留指定位数&#xff0c;比如“123.123600”。 在数据库中以函数的形式实现如下&#xff1a; USE [数据库名称] GO /****** Object: UserDefinedFunction [dbo].[AvgLimit] Script Date: 2016/12/29 11:30:44 ******/ SET ANSI_NUL…

Centos7下安装netstat

刚安装centos7发想没有查看端口的命令 netstat yum install net-tools转载于:https://www.cnblogs.com/cuizhipeng/p/5329811.html

【pyqt5学习】——items view相关控件(list view、table view)

目录 list view——列表视图 table view——表格视图 list view——列表视图 PyQt5-高级控件使用&#xff08;QListView&#xff09; - ygzhaof_100 - 博客园QListView用于展示数据&#xff0c;子类是QListWidget。QlistView基于模型Mode&#xff0c;需要程序创建Model然后保…

变量定义和声明的区别~~~概念上千万不要栽跟头!!!

变量的声明有两种情况&#xff1a; 1、一种是需要建立存储空间的。例如&#xff1a;int a 在声明的时候就已经建立了存储空间。 2、另一种是不需要建立存储空间的。 例如&#xff1a;extern int a 其中变量a是在别的文件中定义的。 声明是向编译器介绍名字&#xff0d;&…