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

使用C#+NUnit+Appium测试小米Poco X3应用启动失败求助

解决Appium启动Android应用时Activity不存在的问题

先修复代码中的明显错误

  • 重复设置PlatformVersion:代码中先后设置了"12"和"11",需删除其中一个,保持与设备实际系统版本一致(小米Poco X3支持升级到Android 12,确认设备版本后填写正确值)
  • 参数类型与键名错误:AndroidMobileCapabilityType.AutoGrantPermissions是枚举类型,无需用字符串传递;部分布尔/数值参数直接用对应类型,不要转成字符串

修正后的Setup方法示例:

[SetUp]
public void Setup()
{
    appiumOptions = new AppiumOptions();
    appiumOptions.PlatformName = "Android";
    appiumOptions.PlatformVersion = "12"; // 匹配你的设备实际系统版本
    appiumOptions.DeviceName = "285f941f";
    appiumOptions.AddAdditionalAppiumOption("udid", "285f941f");
    appiumOptions.AddAdditionalAppiumOption("uiautomator2ServerInstallTimeout", 10000); // 延长超时时间,用整数类型
    appiumOptions.AddAdditionalAppiumOption("appPackage", "com.xxx.ccc");
    appiumOptions.AddAdditionalAppiumOption("appActivity", "com.xxx.ccc.activity.MainActivity");
    appiumOptions.AddAdditionalAppiumOption("noReset", true); // 布尔值直接传递
    appiumOptions.AddAdditionalAppiumOption("adbExecTimeout", 20000);
    appiumOptions.AddAdditionalAppiumOption("appWaitForLaunch", true);
    appiumOptions.AddAdditionalAppiumOption("autoGrantPermissions", true); // 使用正确的字符串键名
}

针对Activity启动失败的排查步骤

  1. 手动验证Activity可启动性
    用adb命令直接启动Activity,确认是否能正常打开:

    adb shell am start -n com.xxx.ccc/com.xxx.ccc.activity.MainActivity
    

    如果命令执行失败,说明Activity本身无法直接启动(比如非launchable类型、需要特定Intent参数);如果能启动,再回到Appium配置排查。

  2. 尝试Activity相对路径格式
    将appActivity改为相对路径,Appium会自动结合appPackage补全完整路径:

    appiumOptions.AddAdditionalAppiumOption("appActivity", ".activity.MainActivity");
    
  3. 跳过Appium自动启动逻辑
    将appWaitForLaunch设为false,在测试代码中手动启动Activity:

    // Setup中修改
    appiumOptions.AddAdditionalAppiumOption("appWaitForLaunch", false);
    
    // Test方法中添加手动启动代码
    driver.StartActivity("com.xxx.ccc", "com.xxx.ccc.activity.MainActivity");
    
  4. 重置UIAutomator2服务

    • 卸载设备上的UIAutomator2相关服务,让Appium重新安装:
      adb uninstall io.appium.uiautomator2.server
      adb uninstall io.appium.uiautomator2.server.test
      
    • 延长uiautomator2ServerInstallTimeout至10000毫秒以上,避免安装超时。
  5. 确认设备连接状态
    执行adb devices确认设备285f941f处于在线状态,无连接异常;若有多台设备,确保udid参数精准指向目标设备。

其他优化点

不要在Test方法中重新声明AppiumDriver driver,直接使用类级变量,避免finally块出现空引用问题:

[Test]
public void Test1()
{
    try
    {
        driver = new AndroidDriver(new Uri("http://127.0.0.1:4723/wd/hub"), appiumOptions);
        Console.WriteLine("App launched successfully!");
        Thread.Sleep(5000);
    }
    catch (Exception e)
    {
        Console.WriteLine("Error: " + e.Message);
    }
    finally
    {
        driver?.Quit();
        Console.WriteLine("Driver session ended.");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:35:55