Appium 2.0.1创建AndroidDriver时找不到main.js文件报错
解决Appium 2.0.1创建AndroidDriver时的InvalidServerInstanceException异常
问题说明
使用Appium 2.0.1创建AndroidDriver时触发InvalidServerInstanceException,报错提示主Appium脚本不存在于'/<project path>/appium/build/lib/main.js'。已运行appium-doctor未发现异常,按Appium 2.0自动启动服务器的方式操作,但服务器却在项目路径而非Appium安装路径查找main文件。已尝试重新安装Appium、按npm推荐流程安装依赖、清理并重建项目,现咨询解决方法:是否可添加驱动能力参数,或需像之前那样指定JS路径手动启动服务器?
报错堆栈
io.appium.java_client.service.local.InvalidServerInstanceException: The main Appium script does not exist at '/<project path>/appium/build/lib/main.js' at io.appium.java_client.service.local.AppiumServiceBuilder.findMainScript(AppiumServiceBuilder.java:159) at io.appium.java_client.service.local.AppiumServiceBuilder.loadPathToMainScript(AppiumServiceBuilder.java:304) at io.appium.java_client.service.local.AppiumServiceBuilder.createArgs(AppiumServiceBuilder.java:360) at io.appium.java_client.service.local.AppiumServiceBuilder.createArgs(AppiumServiceBuilder.java:57) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:490) at io.appium.java_client.service.local.AppiumDriverLocalService.buildService(AppiumDriverLocalService.java:92) at io.appium.java_client.service.local.AppiumDriverLocalService.buildDefaultService(AppiumDriverLocalService.java:88) at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:137) at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:236)
现有创建AndroidDriver的代码
private AppiumDriver createAndroidDriver(int deviceIndex) { this.capabilitiesFactory = new CapabilitiesFactory(); DesiredCapabilities capabilities = this.capabilitiesFactory.createCapabilities(this.currentTestPlatform); return new AndroidDriver(capabilities); }
解决方案
1. 手动指定Appium主脚本路径(推荐)
放弃默认自动构建服务的方式,手动创建AppiumDriverLocalService并指定Appium安装目录下的main.js路径,示例代码如下:
private AppiumDriver createAndroidDriver(int deviceIndex) { this.capabilitiesFactory = new CapabilitiesFactory(); DesiredCapabilities capabilities = this.capabilitiesFactory.createCapabilities(this.currentTestPlatform); // 替换为你的Appium实际安装路径下的main.js File appiumMainScript = new File("/usr/local/lib/node_modules/appium/build/lib/main.js"); AppiumDriverLocalService service = new AppiumServiceBuilder() .usingDriverExecutable(appiumMainScript) .withIPAddress("127.0.0.1") .usingPort(4723) // 可根据需求修改端口 .build(); service.start(); return new AndroidDriver(service, capabilities); }
路径说明:
- 全局安装的Appium通常位于
/usr/local/lib/node_modules/appium/(Linux/macOS)或C:\Users\<你的用户名>\AppData\Roaming\npm\node_modules\appium\(Windows) - 可通过执行
which appium(Linux/macOS)或where appium(Windows)找到Appium命令路径,再对应到build/lib/main.js
2. 排查安装与目录冲突问题
- 确认Appium是全局安装(执行
npm install -g appium),而非仅安装在项目目录下。若为局部安装,需将路径改为项目内node_modules/appium/build/lib/main.js - 检查项目根目录是否存在名为
appium的文件夹,这会干扰服务构建器的路径查找逻辑,建议重命名该文件夹
内容的提问来源于stack exchange,提问作者Deepak Gopal
相关产品推荐
相关产品推荐

