用于启动应用程序的Appium-Activity不存在或无法启动!确保它存在并且是可启动的活动

时间:2018-05-15 22:36:54

标签: android android-emulator appium

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

运行命令遇到内部错误:

  

错误:启动App时出错。

     

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

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

4 个答案:

答案 0 :(得分:6)

问题不言而喻:您没有提供识别您的应用的活动,或者您指定了错误的

你能做什么:

  1. 将设备连接到笔记本电脑,确保打开adb调试
  2. 手动安装您的应用并启动它
  3. 在终端运行中:
  4. adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

    1. 检查输出,你会得到类似的东西:
    2. com.yourcompany.package/com.yourcompany.package.login.view.LoginActivity

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

      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. 在多个真实设备上完美适合我

答案 1 :(得分:0)

手动检查您的应用程序,如@dmle说,

  1. 在Android上打开应用
  2. 转到终端,控制台,命令行(无论如何)
  3. 应安装Adb,
  4. 在termninal输入 adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp
  5. 该命令将提供当前的包&活性。

    也许开发人员改变了你的包ID。

答案 2 :(得分:0)

我遵循指南here

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

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

  2. 手动在设备上打开应用程序,并非常快速地执行上述命令以找到startActivity。

  3. 从mFocusedApp复制软件包和活动的值=

  4. 检查活动可启动性

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

  5. 功能集 DesiredCapabilities功能=新的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());
    

答案 3 :(得分:0)

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