关闭所有打开的命令提示符会导致testNG中的分叉进程出错

时间:2016-05-18 11:04:10

标签: selenium testing testng appium

我正在使用testNG进行移动自动化,我想关闭我发布的多个命令提示符(appium服务器)。为此,我使用以下代码

@AfterSuite
    public void closeCommandPrompts() throws IOException, InterruptedException{
    System.out.println("After suite");
    Thread.sleep(8000);
    Runtime.getRuntime().exec("taskkill /F /IM node.exe");
    System.out.println("closed node.exe");
    Runtime.getRuntime().exec("taskkill /F /IM cmd.exe");

最后一行,如果我将它传出来工作正常,但是如果它们没有被注释,它会在分叉过程中出错。

我猜testNG在内部使用命令提示符,当我在@aftersuite中使用taskkilll时,我试图关闭它。

请帮我解决一些问题。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

     CommandLine command = new CommandLine("cmd");
      command.addArgument("/c");
      command.addArgument("taskkill");
      command.addArgument("/F");
      command.addArgument("/IM");
      command.addArgument("node.exe");

      DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
      DefaultExecutor executor = new DefaultExecutor();
      executor.setExitValue(1);
      try {
            executor.execute(command, resultHandler);
            System.out.println("Stopped appium node ! ");
      } catch (IOException e) {
            System.out.println("FAIL => Unable to stop appium server "+e.getMessage());
            e.printStackTrace();
      }