【问题标题】:Launching Appium Service programmatically failing以编程方式启动 Appium 服务失败
【发布时间】:2018-10-14 06:02:53
【问题描述】:

我有一个大约九个月前创建的 Appium 测试项目,并且运行良好。从那时起,我就尝试再次处理该项目,并且该项目有效,但前提是我手动启动 Appium(使用桌面应用程序)。该项目检查服务器是否已经在运行,如果没有,则使用以下服务逻辑启动它:

public class AppiumServer {

    AppiumDriverLocalService service = null;

    public void InitAppiumServer() {

        System.out.println("Creating Appium Service . . .");
        service = AppiumDriverLocalService.buildDefaultService();
        System.out.println("Appium Service created.  URL: '" + service.getUrl().toString() + "'");

    }

    public void startServer() {

        System.out.println("Starting Appium Service . . .");
        service.start();
        System.out.println("Appium Service started.");

    }

未手动启动 Appium 时的输出结果如下:

创建 Appium 服务。 . . Appium 服务已创建。网址: 'http://0.0.0.0:4723/wd/hub' 正在检查端口 4723 上的 Appium 服务 . . .未检测到先前的 Appium 服务。启动 Appium 服务。 . . io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException: 本地 appium 服务器尚未启动。给定的 Node.js 可执行文件:C:\Program Files\nodejs\node.exe 参数: [C:\Users\m1033792\AppData\Roaming\npm\node_modules\appium\build\lib\main.js, --port, 4723, --address, 0.0.0.0]

如果我打开命令提示符并手动运行该命令行,它也可以工作,只是不使用我一直使用的标准方法,并且从研究中可以看出,大多数其他人都在使用。我似乎也不是唯一遇到这个特殊问题的人,因为我看到它在网络上发布了很多地方,但没有任何回应。

我的 nodejs 是 5.6.0 版本 Appium(通过 nvm 安装)是 1.8 Java 是 1.8.0_144 Maven 是 3.5.4

【问题讨论】:

  • 您好,您可以从 AppiumDriverLocalService.buildDefaultService() 发布代码吗?我们知道 Appium 的工作原理是手动运行命令,因此它可能是代码中的内容。
  • 感谢您的回复,但没有可发布的代码。它来自一个导入的库:io.appium.java_client.service.local.AppiumDriverLocalService
  • 嗯,我们使用的是哪个 java 客户端版本的 appium?我看到他们在 3.3.0 版本中做了一些补丁。另外,我从 java 客户端的文档github.com/appium/java-client/blob/… 中发现了这一点,听起来可能发生的事情是 java 程序中的命令使用了不同的 node.js 可执行文件
  • 我以为我有最新的稳定版本,但它是 5.0.0。我用 5.0.4 更新了 pom.xml 并再次尝试了相同的结果。如果一切都失败了,我可能会尝试 beta 6 版本。我也遇到了您链接到的页面,但我不确定另一个 node.exe 的位置。接下来会研究。

标签: java node.js maven appium


【解决方案1】:

经过广泛的研究和反复试验,我更深入地查看了堆栈跟踪并注意到它指的是:

com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter

由于“不存在”进一步研究表明其他服务存在相同问题,不一定是 Appium 服务器,这与我的 guava 版本为 21.0 而不是 23.0 相关。

在我的 pom.xml 中更新该设置后,项目再次无错误地运行。

这是因为我没有在我的问题中发布 -entire-stack 跟踪。经验教训。

【讨论】:

    【解决方案2】:

    如果你仍然有问题,请尝试下面的 sn-p,它会完美工作。

    静态 AppiumDriverLocalService appium;

    public static void start() throws IOException {
        AppiumServiceBuilder builder = new AppiumServiceBuilder()
                .withAppiumJS(new File("/usr/local/lib/node_modules/appium/build/lib/main.js"))
                .withArgument(GeneralServerFlag.SESSION_OVERRIDE)
                .withLogFile(new File(System.getProperty("user.dir") + "/appiumServerLog.txt"));
        appium = builder.build();
        System.out.println("Starting the Appium Server on 127.0.0.1:4723");
        appium.start();
    }
    

    【讨论】:

      【解决方案3】:

      首先必须通过 npm 安装 Appium。 请检查是否有任何 exisiitinh node.exe 以避免潜在的启动错误 杀死 node.exe 以避免错误,因为我们通过 node js 启动 appium,就像杀死 chrome driver exe 一样

      这是启动appium的代码

      @BeforeClass
          public void appiumServerStart() {
      
              //Build the Appium service
                      builder = new AppiumServiceBuilder();
                      builder.withIPAddress("127.0.0.1"); 
                      //127.0.0.1 is the  localhost normally resolves to the IPv4  127.0.0.1
                      builder.usingPort(4723); //Appium default port
                      builder.withCapabilities(cap);
                      builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
                      builder.withArgument(GeneralServerFlag.LOG_LEVEL,"error");
      
                      //Start the server with the builder
                      service = AppiumDriverLocalService.buildService(builder);
                      service.start();
                      System.out.println("Appium Server Started via Java");
          }
      

      【讨论】:

        猜你喜欢
        • 2018-10-07
        • 2019-07-15
        • 2021-04-13
        • 1970-01-01
        • 2017-10-22
        • 2019-01-14
        • 1970-01-01
        • 2020-01-15
        • 2011-10-03
        相关资源
        最近更新 更多