以编程方式启动Appium Service失败

时间:2018-05-03 20:19:46

标签: java node.js maven appium

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

.../index?part_number=123*321$description1=&description2=TestText

当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:\用户\ m1033792 \应用程序数据\漫游\ NPM \ node_modules \ appium \建立\ 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

3 个答案:

答案 0 :(得分:2)

经过广泛的研究和反复试验后,我深入研究了堆栈跟踪并注意到它提到:

  

com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava / util的/并行/ ExecutorService的)LCOM /谷歌/普通/ util的/并行/ SimpleTimeLimiter

As"不存在"进一步的研究显示其他服务与其他服务有同样的问题,不一定是Appium服务器,并且它与我的番石榴版本21.0而不是23.0相关联。

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

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

答案 1 :(得分:0)

如果仍然有问题,请尝试下面的代码片段,它将非常有用。

静态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();
}

答案 2 :(得分:0)

首先必须通过npm安装Appium。 请检查是否存在任何exisiitinh node.exe,以避免通过以下方式引起潜在的启动错误: 杀死node.exe以避免错误,因为我们通过诸如杀死chrome驱动程序exe的node js启动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");
    }