如何在 Java 中使用 nodeJs 停止 Appium 服务器

Posted

技术标签:

【中文标题】如何在 Java 中使用 nodeJs 停止 Appium 服务器【英文标题】:How to stop Appium server using nodeJs in Java 【发布时间】:2022-01-24 06:16:57 【问题描述】:

我正在尝试以编程方式启动和停止 Appium 服务器。

我的系统中安装了 nodeJS。

为了启动服务器,我在批处理文件中使用“appium”命令并使用 Java 运行该批处理文件。

停止服务器:

    Runtime runtime = Runtime.getRuntime();
    runtime.exec("taskkill /F /IM node.exe");

但是通过使用 taskKill 服务器并没有杀死。

请建议我可以停止正在运行的 Appium 服务器的任何方法。

【问题讨论】:

我不知道appium。但是适当的服务器有一个记录在案的关闭例程(例如发送信号、连接特定端口等)。也许在文档中查找。但是您已经提到它是 nodejs 软件,所以在这里可能期望过高。但请记住,终止进程可能不会优雅地终止软件(将未保存的数据写入磁盘等) 【参考方案1】:

您可以通过两种方式启动和停止appium服务器,

    通过使用启动和停止服务器作为 java 方法,
  private AppiumDriver<?> driver;
  private AppiumDriverLocalService appiumDriverLocalService;
  private static final String NODE_FILE_PATH = "/usr/local/bin/node";
  private static final String APPIUM_FILE_PATH = "/usr/local/bin/appium";

  public void startAppiumServer() 
    Map<String, String> environment = new HashMap();
    environment.put("PATH", "/usr/local/bin:" + System.getenv("PATH"));
    AppiumServiceBuilder appiumServiceBuilder = new AppiumServiceBuilder();
    appiumServiceBuilder.usingAnyFreePort();
    appiumServiceBuilder.usingDriverExecutable(new File(NODE_FILE_PATH));
    appiumServiceBuilder.withAppiumJS(new File(APPIUM_FILE_PATH));
    appiumServiceBuilder.withEnvironment(environment);
    appiumDriverLocalService = AppiumDriverLocalService.buildService(appiumServiceBuilder);
    appiumDriverLocalService.start();
  

  public void stopAppiumServer() 
    appiumDriverLocalService.stop();
  

    而且,如果你想用 shell 命令杀死 appium 服务器线程,你可以使用如下, sudo kill $(ps aux | grep -i appium | awk 'print $2')

【讨论】:

以上是关于如何在 Java 中使用 nodeJs 停止 Appium 服务器的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过其 Sidecar Java Spring 服务启动/停止 Falcor (NodeJS) 应用程序?

无法在 nodeJS 中获取 pm2 退出或停止事件

如何安装NodeJS NodeJS如何运行

forever让node.js持久运行

如何在 NodeJS 上验证 AWS Cognito 访问令牌

在 Nodejs Express 应用程序中单击按钮时启动/停止 cronjob