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

AndroidDriver连接真机App后无法执行操作,报UnreachableBrowserException错误

问题分析与解决方案

问题描述

使用Appium对安卓真机进行App测试时,AndroidDriver可成功连接并唤起设备上的App,但调用driver.findElement等方法时无响应,等待许久后抛出以下错误:

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.

测试代码如下:

public class sampleTest {
    private AndroidDriver driver;

    @Before
    public void setUp() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("deviceName","Zachary");
        desiredCapabilities.setCapability("udid","88Y5T19B1793");
        desiredCapabilities.setCapability("platformName","Android");
        desiredCapabilities.setCapability("platformVersion","3.0.0");
        desiredCapabilities.setCapability("appPackage","com.test.test");
        desiredCapabilities.setCapability("appActivity","host.exp.exponent.MainActivity");

        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        // 此处设备上的App已被打开
    }

    @Test
    public void SampleTest() {
        // 此处无任何反应
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        driver.findElement(By.id("SignIn")).click();

    }

    @After
    public void tearDown() {
        driver.quit();
    }
}

可能的原因及解决步骤

1. 版本兼容性问题

  • 检查platformVersion是否填错:Android 3.0是非常老旧的版本,大概率是误填,查看设备实际系统版本(设置-关于手机)并修正,比如改为13或14。
  • 确保Appium版本适配设备系统,建议安装最新稳定版Appium,同时执行appium driver install uiautomator2确保UiAutomator2驱动正常安装。

2. 元素定位方式错误

  • 用Appium Inspector连接设备,确认SignIn是不是元素的真实ID:
    • 针对Expo打包的App(从appActivity可看出),元素ID可能不是直接的SignIn,尝试用accessibilityId或XPath定位:
      driver.findElement(By.accessibilityId("SignIn")).click();
      
      或
      driver.findElement(By.xpath("//*[@text='SignIn']")).click();
      

3. 等待策略设置时机错误

  • 把隐式等待移到setUp方法中初始化driver之后,确保元素查找时已有等待策略:
    driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    

4. 设备或服务异常

  • 检查设备是否开启USB调试、允许模拟位置等权限,且已授权当前电脑连接。
  • 重启相关服务:执行adb kill-server后再adb start-server,关闭Appium服务后重启,同时重启设备重新测试。
  • 查看Appium日志,获取更详细的错误信息,定位是元素查找失败还是连接中断导致的问题。

5. Capability配置补充

  • 添加automationName配置,明确指定使用UiAutomator2驱动:
    desiredCapabilities.setCapability("automationName", "UiAutomator2");
    

调整后的示例代码

public class sampleTest {
    private AndroidDriver driver;

    @Before
    public void setUp() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("deviceName","Zachary");
        desiredCapabilities.setCapability("udid","88Y5T19B1793");
        desiredCapabilities.setCapability("platformName","Android");
        desiredCapabilities.setCapability("platformVersion","13"); // 替换为设备实际系统版本
        desiredCapabilities.setCapability("appPackage","com.test.test");
        desiredCapabilities.setCapability("appActivity","host.exp.exponent.MainActivity");
        desiredCapabilities.setCapability("automationName", "UiAutomator2");

        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    }

    @Test
    public void SampleTest() {
        driver.findElement(By.accessibilityId("SignIn")).click();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.quit();
        }
    }
}

内容的提问来源于stack exchange,提问作者YI LU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:20:38