如何使用 Java 获取 chromedriver 进程 PID?

How can I get chromedriver process PID using Java?(如何使用 Java 获取 chromedriver 进程 PID?)
本文介绍了如何使用 Java 获取 chromedriver 进程 PID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个问题.有时,当我的 JUnit 测试运行时,命令 webDriver.quit();没有杀死 chromedriver 进程,因此下一个测试无法开始.在这种情况下,我想添加一些可能会在 Linux 上手动终止进程的方法,但我不知道如何获取 chromedriver 的 PID,因此我可以执行以下操作:Runtime.getRuntime().exec(KILL + PID);

I've faced a problem. Sometimes, while my JUnit tests are running, command webDriver.quit(); isn't killing chromedriver process so the next test can't start. In that case I want to add some method which may kill process manually on Linux, but I can't figure out how to get PID of chromedriver so I can do something like: Runtime.getRuntime().exec(KILL + PID);

推荐答案

你可以使用 pgrep 找到 PID,然后杀死它:

You can find PIDs using pgrep and then kill it:

    private void killChromedriver() throws IOException, InterruptedException {
        String command = "pgrep chromedriver";
        Process process = Runtime.getRuntime().exec(command);
        BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
        List<String> processIds = getProcessedIds (process, br);
        for (String pid: processIds) {
                Process p = Runtime.getRuntime().exec("kill -9 " + pid);
                p.waitFor();
                p.destroy();
        }
    }
    private List<String> getProcessedIds(Process process, BufferedReader br) throws IOException, InterruptedException {
        process.waitFor();

        List<String> result = new ArrayList<>();
        String processId ;

        while (null != (processId = br.readLine())) {
            result.add(processId);
        }

        process.destroy();
        return result;
    }

<小时>

更新

另一个更简单的解决方案似乎是

Another and more simple solution seems to be

    Runtime.getRuntime().exec("pkill chromedriver");

这篇关于如何使用 Java 获取 chromedriver 进程 PID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
Insert a position in a linked list Java(在链接列表中插入位置Java)
Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
printing nodes from a singly-linked list(打印单链接列表中的节点)
Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)