【问题标题】:Appium-Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity用于启动应用的 Appium-Activity 不存在或无法启动!确保它存在并且是可启动的活动
【发布时间】:2018-10-25 20:53:05
【问题描述】:

我正在尝试使用 appium 运行在 eclipse 上创建的测试文件。当我在连接到系统的真实 android 设备上执行测试时,出现以下错误:

运行命令时遇到内部错误:

错误:启动应用时出错。

原始错误:用于启动应用程序的活动不存在或无法启动!确保它存在并且是可启动的活动。

应用程序在模拟器上手动打开正常,所以我不确定真实设备有什么问题。

【问题讨论】:

标签: android android-emulator appium


【解决方案1】:

问题不言自明:您要么没有提供活动来识别您的应用,要么您指定了错误的应用

你可以做什么:

  1. 将设备连接到笔记本电脑,确保 adb 调试已打开
  2. 手动安装您的应用并启动它
  3. 在终端运行中:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

  1. 检查输出,你会得到类似的东西:

com.yourcompany.package/com.yourcompany.package.login.view.LoginActivity

所以现在你有了应该提供 Appium 的包 - com.yourcompany.package 和活动 com.yourcompany.package.login.view.LoginActivity

  1. 添加新功能,全套应如下所示: DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "device"); capabilities.setCapability("app", pathToApk); capabilities.setCapability("platformName", "android"); capabilities.setCapability("appWaitPackage", "com.yourcompany.package"); capabilities.setCapability("appWaitActivity", "com.yourcompany.package.login.view.LoginActivity");

在多个真实设备上非常适合我

【讨论】:

    【解决方案2】:

    像@dmle 所说的那样手动检查您的应用,

    1. 在 Android 上打开应用
    2. 转到终端、控制台、命令行(随便)
    3. 应该安装adb,
    4. 在终端输入 adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp

    该命令将提供当前的包和活动。

    也许开发人员更改了您的包 ID。

    【讨论】:

      【解决方案3】:

      我按照指南here

      1. 在终端输入以下命令(尚未执行)

        adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

      2. 在设备上手动打开应用,执行上面的命令,很快就找到了startActivity。

      3. 从 mFocusedApp 复制 Package 和 Activity 的值=

      4. 检查 Activity 是否可以启动

        adb shell am start -n package.android/.activity.SplashActivity

      5. 能力集 DesiredCapabilities 能力 = new DesiredCapabilities();

        capabilities.setCapability("device", "Android");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Galaxy Note9");
        
        capabilities.setCapability("appWaitPackage", "package.android");
        capabilities.setCapability("appWaitActivity", ".activity.SplashActivity");
        capabilities.setCapability("appPackage", "package.android");
        capabilities.setCapability("appActivity", ".activity.SplashActivity");
        capabilities.setCapability("appWaitDuration", 10000);//this is way optional, 20000 by default
        
        capabilities.setCapability("app", newApp.getAbsolutePath());
        

      【讨论】:

        【解决方案4】:

        我总是收到“遇到内部错误运行命令:错误:应用程序在”“不存在或不可访问”我使用 Driver wait 并解决了。

        【讨论】:

          猜你喜欢
          • 2019-08-01
          • 2015-06-14
          • 2015-02-10
          • 2013-12-18
          • 2018-03-26
          • 2018-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多