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

运行Appium测试遇AndroidDriver初始化失败,请求排查故障

问题排查:Appium无法启动AndroidDriver会话(Chrome Web应用测试)

核心错误分析

Error initializing AndroidDriver: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

该错误本质是Appium无法与Android模拟器建立Chrome自动化会话,常见触发点包括ChromeDriver与Chrome版本不兼容、Desired Capabilities配置缺失、模拟器/ADB状态异常、Appium服务配置问题。

逐步排查与修复方案

1. 修复ChromeDriver路径配置错误

你的代码中误用了WebDriverManager.chromedriver().getBrowserPath(),该方法返回的是Chrome浏览器的路径,但Appium需要的是ChromeDriver驱动程序的路径。同时必须保证ChromeDriver版本与模拟器中Chrome浏览器版本完全匹配。

修正代码:

// Step 4: 配置对应版本的ChromeDriver
WebDriverManager.chromedriver().setup();
// 获取ChromeDriver驱动路径,而非Chrome浏览器路径
caps.setCapability("chromeDriverExecutable", WebDriverManager.chromedriver().getDriverPath());

额外检查:

  • 打开模拟器Chrome,通过「设置→关于Chrome」查看版本
  • 若版本不匹配,可通过WebDriverManager.chromedriver().version("具体版本号").setup()指定对应版本

2. 补充关键Desired Capabilities配置

现有配置缺少几个核心参数,导致Appium无法正确识别设备和启动会话:

  • platformVersion: 必须指定模拟器的Android系统版本(如"13"、"14")
  • automationName: 显式指定UiAutomator2(Android Web测试的标准自动化引擎)
  • noReset: 设置为true可避免每次测试重置Chrome状态,提升稳定性

修正后的capabilities代码:

// Step 3: 配置Android设备与Chrome的核心参数
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "13"); // 替换为你的模拟器Android版本
caps.setCapability("deviceName", "emulator-5554");
caps.setCapability("browserName", "Chrome");
caps.setCapability("automationName", "UiAutomator2");
caps.setCapability("noReset", true);

3. 验证模拟器与ADB状态

  • 执行adb devices命令,确认emulator-5554处于device状态(而非offline)
  • 确保模拟器完全启动(加载完成,可正常打开Chrome)
  • 若设备状态异常,执行adb kill-server && adb start-server重置ADB服务

4. 优化Appium服务配置

  • 检查端口4723是否被占用:Mac/Linux用lsof -i :4723,Windows用netstat -ano | findstr :4723,若占用则更换端口或关闭占用进程
  • 添加日志输出方便排查:
serviceBuilder.withLogFile(new File("appium_logs.txt")); // 生成Appium运行日志

5. 完整修正后的测试代码

package appiumbasics;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.service.local.AppiumDriverLocalService;
import io.appium.java_client.service.local.AppiumServiceBuilder;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

import java.io.File;
import java.net.MalformedURLException;

public class RunWebAppAndroid {

    @Test
    public void OpenWebAppInChrome() throws MalformedURLException {
        // Step 1: 配置带日志的Appium本地服务
        AppiumServiceBuilder serviceBuilder = new AppiumServiceBuilder();
        serviceBuilder.usingPort(4723)
                      .withLogFile(new File("appium_logs.txt"));

        // Step 2: 启动Appium服务
        AppiumDriverLocalService service = AppiumDriverLocalService.buildService(serviceBuilder);
        service.start();

        // Step 3: 设置Android设备与Chrome的Desired Capabilities
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("platformName", "Android");
        caps.setCapability("platformVersion", "13"); // 替换为你的模拟器Android版本
        caps.setCapability("deviceName", "emulator-5554");
        caps.setCapability("browserName", "Chrome");
        caps.setCapability("automationName", "UiAutomator2");
        caps.setCapability("noReset", true);

        // Step 4: 配置匹配版本的ChromeDriver
        WebDriverManager.chromedriver().setup();
        caps.setCapability("chromeDriverExecutable", WebDriverManager.chromedriver().getDriverPath());

        // Step 5: 初始化AndroidDriver并执行测试
        AndroidDriver driver = null;
        try {
            driver = new AndroidDriver(service.getUrl(), caps);
            driver.get("http://example.com");
            System.out.println("Web App已成功在模拟器Chrome中打开。");

            // 可添加后续自动化步骤
            // driver.findElement(...).click();
            
        } catch (Exception e) {
            System.err.println("初始化AndroidDriver失败: " + e.getMessage());
            e.printStackTrace(); // 打印完整堆栈信息,便于定位深层问题
        } finally {
            if (driver != null) {
                driver.quit();
            }
            service.stop();
        }
    }
}

额外排查技巧

  • 查看appium_logs.txt文件,里面会包含更详细的错误细节(如Chrome启动失败原因、版本不匹配提示)
  • 手动在模拟器中打开Chrome并访问目标URL,确认网络和浏览器本身无异常

内容的提问来源于stack exchange,提问作者Albear Mousa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:57:11