TL; DR:我只能在特定设备上运行1个测试,然后通过手动或通过Appium服务器调用将我的应用程序连接到ADB会话的其他尝试均失败。如何解决此问题,以便恢复自动测试?
我的设备的Appium所需功能包括noReset = True
。除设备标识符之外的所有其他期望功能都可以在我的所有其他设备之间共享并工作。
直到我将driver.reset()
添加到其中一个测试中,才观察到此错误。删除该行代码无法解决此问题。因此,我怀疑Appium不是此错误的根本原因,而是突出了它。我想要的功能是:
`
'platformName': 'Android',
'platformVersion': '8.0',
'deviceName': 'WVGA_API_26',
'avd': 'WVGA_API_26',
'app_package': 'com.ferly.ferly',
'app_activity': 'host.exp.exponent.experience.ShellAppActivity',
'app_wait_package': 'com.ferly.ferly',
'automationName': 'UiAutomator2',
'noReset': 'true',`
尝试初始化使用受影响设备的任何驱动程序会话,都会在Appium中出现以下错误:
WebDriverException:消息:处理命令时发生未知的服务器端错误。原始错误:无法启动“ com.ferly.ferly”应用程序。访问https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md进行故障排除。原始错误:执行adbExec时出错。原始错误:'命令'C:\ Users \ Jeff \ AppData \ Local \ Android \ sdk \ platform-tools \ adb.exe -P 5037 -s emulator-5558 shell am start -W -n com.ferly.ferly / host .exp.exponent.experience.ShellAppActivity -S'在20000ms之后超时。尝试增加以“ adbExecTimeout”功能表示的20000ms adb执行超时
在Windows shell中运行命令:C:\Users\<user>\AppData\Local\Android\sdk\platform-tools\adb.exe -P 5037 -s emulator-5556 shell am start -W -n com.ferly.ferly/host.exp.exponent.experience.ShellAppActivity -S
,其中模拟器5556是受影响的设备,给出以下输出:
停止:com.ferly.ferly
开始:意图{cmp = com.ferly.ferly / host.exp.exponent.experience.ShellAppActivity}
^ C(等待2分钟后手动休息。)
在我的模拟器上,该应用程序已打开并且可以按预期使用,但是adb会话无法识别该应用程序已打开。
运行相同的命令,但对于不受影响的设备(例如emulator-5558),此输出成功:
停止:com.ferly.ferly
开始:意图{cmp = com.ferly.ferly / host.exp.exponent.experience.ShellAppActivity}
警告:活动尚未开始,其当前任务已置于最前面
状态:确定
这次:0
总时间:0
等候时间:872
完成
解决方法:每次测试允许在该设备上运行一个测试之后,在受影响的设备上卸载“ Appium设置”应用。
我面临的核心问题是什么,我该如何解决?如果重要的话,我的测试脚本全部用Python编写。
答案 0 :(得分:0)
我将超时时间增加到了600秒,如下所示。
driver.manage()。timeouts()。implicitlyWait(600,TimeUnit.SECONDS);
这个问题似乎已经解决了。