【问题标题】:How can I get chromedriver process PID using Java?如何使用 Java 获取 chromedriver 进程 PID?
【发布时间】:2016-11-07 14:38:36
【问题描述】:

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

【问题讨论】:

    标签: java linux selenium selenium-chromedriver


    【解决方案1】:

    您可以使用 pgrep 找到 PID,然后将其杀死:

        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;
        }
    

    更新

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

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

    【讨论】:

    • 无法获取,“getProcessedIds (process, br);”中有什么方法?它是未定义的。
    • 顺便说一句,似乎可以只使用 Runtime.getRuntime().exec(KILL + PID);
    • 对不起,Runtime.getRuntime().exec("pkill chromedriver");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 2016-02-01
    • 2021-08-08
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多