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

Appium自动化启动Android模拟器Chrome浏览器报错及白屏问题

Appium启动Android模拟器Chrome浏览器失败(白屏+超时错误)

问题现象

  • Appium服务已正常运行
  • Chrome浏览器能启动,但启动后显示空白白屏
  • 代码运行抛出SessionNotCreatedException错误,核心提示为Adb command timed out after 30 seconds

错误日志

SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. 
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. 
Message: An unknown server-side error occurred while processing the command. Original error: timeout: Adb command timed out after 30 seconds  
Host info: host: 'IN-HVKMHS3', ip: '192.168.29.3' 
Build info: version: '4.9.1', revision: 'eb2032df7f' 
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_361' 
Driver info: io.appium.java_client.android.AndroidDriver 
Command: [null, newSession {capabilities=[{appium:automationName=UiAutomator2, browserName=Chrome, appium:chromedriverExecutableDir=C:\Users\gjsr\Downloads\Drivers, appium:device=Android, appium:deviceName=emulator-5554, platformName=ANDROID, appium:platformVersion=12}], desiredCapabilities=Capabilities {automationName: UiAutomator2, browserName: Chrome, chromedriverExecutableDir: C:\Users\gjsr\Downloads\Dri..., device: Android, deviceName: emulator-5554, platformName: ANDROID, platformVersion: 12}}] 
Capabilities {automationName: UiAutomator2, browserName: Chrome, chromedriverExecutableDir: C:\Users\gjsr\Downloads\Dri..., device: Android, deviceName: emulator-5554, platformName: ANDROID, platformVersion: 12}    
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:136)   
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
at java.lang.reflect.Method.invoke(Unknown Source)  
at io.appium.java_client.remote.AppiumProtocolHandshake.createSession(AppiumProtocolHandshake.java:133)     
at io.appium.java_client.remote.AppiumProtocolHandshake.createSession(AppiumProtocolHandshake.java:102)     
at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:194)     
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:262)   
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)     
at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:229)   
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:157)  
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:80)  
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:92)  
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:117)   
at ecolab.connect.base.BaseTest.main(BaseTest.java:45)  

运行代码

package ecolab.connect.base;
import java.net.MalformedURLException;
import java.nio.charset.MalformedInputException;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.options.UiAutomator2Options;
import io.appium.java_client.remote.MobileBrowserType;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class BaseTest
{
    public static AndroidDriver driver;
    public static void main(String[] args) throws MalformedURLException, InterruptedException 
    {
        
        DesiredCapabilities capabilities=new DesiredCapabilities();
          capabilities.setCapability("chromedriverExecutableDir","C:\\Users\\gjsr\\Downloads\\Drivers");
        
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
                capabilities.setCapability("device", "Android");
        capabilities.setCapability("deviceName", "emulator-5554");
        capabilities.setCapability("platformVersion","12");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("automationName", "UiAutomator2");
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,MobilePlatform.ANDROID);
         try {
        driver=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
         } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        Thread.sleep(10000);
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
        driver.get("http://www.goolge.com");
        Thread.sleep(10000);
        driver.quit();
    }
}

解决方案

1. 匹配ChromeDriver与Chrome版本

模拟器中Chrome的版本必须和chromedriverExecutableDir下的ChromeDriver版本严格匹配(大版本一致,小版本尽量接近)。可以在模拟器Chrome的设置->关于Chrome查看版本,再下载对应版本的ChromeDriver。

2. 延长ADB超时时间

在DesiredCapabilities中添加配置,把ADB超时时间延长到60秒:

capabilities.setCapability("adbExecTimeout", 60000);

3. 优化模拟器性能

  • 给模拟器分配更多CPU和内存(模拟器设置->高级->CPU/内存)
  • 启用硬件加速选项,减少卡顿导致的超时

4. 清理冗余配置

代码中重复设置了platformName,删除其中一条;同时删除非标准的device配置:

// 删除重复的platformName配置
// capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,MobilePlatform.ANDROID);
// 删除device配置
// capabilities.setCapability("device", "Android");

5. 检查依赖版本兼容性

确保Appium稳定版、Selenium 4.9.1、Appium Java客户端、Java 1.8.0_361之间版本兼容,建议优先使用最新稳定版Appium。

6. 修复ADB连接

打开命令行执行以下命令,确认模拟器连接正常:

adb devices
adb shell

如果连接超时,重启ADB服务:

adb kill-server
adb start-server

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:20:02