我有一个大约九个月前创建的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
答案 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");
}