You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:03:41