提问者:小点点

Appium(Android):在设备上运行1个测试后启动时超时


TL;DR:我只能对某个设备运行一次测试,然后每隔一次尝试将我的应用程序连接到ADB会话,手动或通过Appium服务器调用,都会失败。如何解决这个问题,以便能够恢复自动化测试?

我的设备的Appium desired_capabilities包括noreset=true。除设备标识符之外的所有其他desired_capabilities都在所有其他设备之间共享并适用于所有其他设备。
直到将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时出错。原始错误:“command”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后超时”。尝试增加由“adb exectioneout”功能表示的20000ms adb执行超时

在我的Windows shell中运行命令:C:\users\\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,其中emulator-5556是受影响的设备,会得到以下输出:

停止:com.ferly.ferly
开始:Intent{cmp=com.ferly.ferly/host.exp.exponent.experience.ShellAppActivity}
^C(等待2分钟后手动中断。)

在我的模拟器上,应用程序打开了,并且可以按照我的预期使用,但是adb会话并不识别应用程序已打开。

对未受影响的设备(例如emulator-5558)运行相同的命令会成功,输出如下:

正在停止:com.ferly.ferly
正在启动:Intent{cmp=com.ferly.ferly/host.exp.exponent.experience.ShellAppActivity}
警告:activity未启动,其当前任务已前置
状态:OK
此时间:0
TotalTime:0
WaitTime:872
已完成

解决方法:每次测试后卸载受影响设备上的Appium Settings应用程序允许在该设备上运行一个测试。

我面临的核心问题是什么,我如何解决它?如果重要的话,我的测试脚本都是用Python编写的。


共1个答案

匿名用户

我已将超时时间增加到600秒,如下所示。

driver.manage().timeouts().implicitlyWait(600,TimeUnit.seconds);

这个问题对我来说似乎已经解决了。