我正在尝试使用appium运行在eclipse上创建的测试文件。当我在连接到系统的真实Android设备上执行测试时,我收到以下错误:
运行命令遇到内部错误:
错误:启动App时出错。
原始错误:用于启动应用的活动不存在或无法启动!确保它存在且是可启动的活动。
该应用程序在手动和模拟器上打开正常,所以我不确定真实设备的问题是什么。
答案 0 :(得分:6)
问题不言而喻:您没有提供识别您的应用的活动,或者您指定了错误的。
你能做什么:
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
com.yourcompany.package/com.yourcompany.package.login.view.LoginActivity
现在你有了包 - com.yourcompany.package
和活动com.yourcompany.package.login.view.LoginActivity
,你应该提供Appium。
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");
在多个真实设备上完美适合我
答案 1 :(得分:0)
手动检查您的应用程序,如@dmle说,
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp
该命令将提供当前的包&活性。
也许开发人员改变了你的包ID。
答案 2 :(得分:0)
我遵循指南here
在终端中键入以下命令(尚未执行)
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
手动在设备上打开应用程序,并非常快速地执行上述命令以找到startActivity。
从mFocusedApp复制软件包和活动的值=
检查活动可启动性
adb shell am start -n package.android/.activity.SplashActivity
功能集 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
并解决了。