使用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连接状态
- 执行
adb devices确认设备3c840470处于device状态,若显示unauthorized,需在设备上点击授权电脑连接 - 重启ADB服务:依次执行
adb kill-server和adb start-server
- 执行
- 验证版本兼容性
确认Appium版本(执行appium -v查看)与本地ADB版本(执行adb version查看)匹配,版本不兼容会直接导致adbExec执行失败 - 检查应用与设备权限
- 手动安装
C:\\Dragonflytest\\Appium\\Resourceses\\ixigo.apk到设备,确认安装无报错 - 确保设备已开启USB调试、安装未知应用权限,小米设备额外需要开启**USB调试(安全设置)**选项
- 手动安装
- 优化测试代码
- 移除
appWaitForLaunch配置或设为true,避免应用未完全启动就执行后续操作 - 启动Activity改用Appium原生API,替代JavascriptExecutor方式:
driver.startActivity(new Activity("com.ixigo", "com.ixigo.home.HomeActivity")); - 替换硬编码的
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
相关产品推荐
相关产品推荐

