2016-11-07 11 views
1

私は問題に直面しました。 JUnitテストが実行されている間に、webDriver.quit();コマンドを実行することがあります。クロムドライバープロセスを殺していないので、次のテストを開始できません。その場合、私はLinux上で手作業でプロセスをkillするメソッドを追加したいが、chromedriverのPIDを取得する方法を知ることができないので、次のようなことができる。 Runtime.getRuntime()。exec(KILL + PID) ;Javaを使用してchromeriverプロセスPIDを取得するにはどうすればよいですか?

答えて

0

あなたは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; 
    } 

UPDATE

別の、より簡単な解決策は

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

であるように思わ取得できませんそれは、 "getProcessedIds(process、br);にあります。方法?それは未定義です。 –

+0

ちょうどRuntime.getRuntime()。exec(KILL + PID)を使うことは可能です。 – shurick

+0

申し訳ございませんが、Runtime.getRuntime()。exec( "pkill chromedriver"); – shurick

関連する問題