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

使用Appium自动化小米11 Lite NE上Ixigo应用时遇WebDriverException错误求助

问题描述

在真实设备XIAOMI 11 Lite NE上自动化测试Ixigo安卓应用时,执行测试用例抛出WebDriverException,错误详情:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Error executing adbExec

测试代码

@BeforeSuite
public void StartServer() throws MalformedURLException {
    service = new AppiumServiceBuilder().withAppiumJS(new File("C:\\Users\\anile\\AppData\\Roaming\\npm\\node_modules\\appium\\build\\lib\\main.js")).withIPAddress("127.0.0.1").usingPort(4723).build();
    service.start();
    System.out.println("*******Sever has been started!!********");
    
    UiAutomator2Options options = new UiAutomator2Options();
    options.setCapability("deviceName", "XIAOMI 11 Lite NE");
    options.setCapability("app", "C:\\Dragonflytest\\Appium\\Resourceses\\ixigo.apk");
    options.setCapability("udid", "3c840470");
    options.setCapability("platformName", "android");
    options.setCapability("platformVersion", "14");
    options.setCapability("appWaitForLaunch", false);
    //options.setCapability("noReset", true);
    
     driver = new AndroidDriver(new URL("http://127.0.0.1:4723"),options);
}

@Test
public void Test1() throws InterruptedException {
    //System.out.println("success");
    Activity activity = new Activity("com.ixigo", "com.ixigo.home.HomeActivity");
    
    ((JavascriptExecutor)driver).executeScript("mobile:startActivity",ImmutableMap.of("intent","com.ixigo/com.ixigo.home.HomeActivity"));
    Thread.sleep(3000);
    WebElement oneway = driver.findElement(AppiumBy.androidUIAutomator("new UiSelector().text(\\\"Round Trip\\\")"));
    if (oneway.isDisplayed()==true) {
        System.out.println("Element is displayed and visibled:"+oneway.getText());
    }else if (oneway.isDisplayed()==false) {
        System.out.println("Element is not displayed and visibled:"+oneway.getText());
    }

    wait.waitForElementToClick(oneway, 2);
    
Thread.sleep(5000);

排查与解决步骤

  • 检查ADB连接状态
    1. 执行adb devices确认设备3c840470处于device状态,若显示unauthorized,需在设备上点击授权电脑连接
    2. 重启ADB服务:依次执行adb kill-server和adb start-server
  • 验证版本兼容性
    确认Appium版本(执行appium -v查看)与本地ADB版本(执行adb version查看)匹配,版本不兼容会直接导致adbExec执行失败
  • 检查应用与设备权限
    1. 手动安装C:\\Dragonflytest\\Appium\\Resourceses\\ixigo.apk到设备,确认安装无报错
    2. 确保设备已开启USB调试、安装未知应用权限,小米设备额外需要开启**USB调试(安全设置)**选项
  • 优化测试代码
    1. 移除appWaitForLaunch配置或设为true,避免应用未完全启动就执行后续操作
    2. 启动Activity改用Appium原生API,替代JavascriptExecutor方式:
      driver.startActivity(new Activity("com.ixigo", "com.ixigo.home.HomeActivity"));
      
    3. 替换硬编码的Thread.sleep为显式等待,提升测试稳定性:
      WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
      WebElement roundTrip = wait.until(ExpectedConditions.visibilityOfElementLocated(AppiumBy.androidUIAutomator("new UiSelector().text(\"Round Trip\")")));
      
  • 指定ADB路径(可选)
    若系统存在多个ADB版本,可在Appium服务启动时指定正确的ADB路径:
    service = new AppiumServiceBuilder()
        .withAppiumJS(new File("C:\\Users\\anile\\AppData\\Roaming\\npm\\node_modules\\appium\\build\\lib\\main.js"))
        .withIPAddress("127.0.0.1")
        .usingPort(4723)
        .withArgument(GeneralServerFlag.ADB_PATH, "你的ADB完整路径,比如C:\\platform-tools\\adb.exe")
        .build();
    

内容的提问来源于stack exchange,提问作者ANIL KUMAR CHINNA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:14:50