Appium (Android): Тайм-аут при запуске после запуска 1 теста на устройстве - PullRequest
1 голос
/ 09 марта 2019

TL; DR: я могу запустить только 1 тест на определенном устройстве, после чего любая другая попытка подключить мое приложение к сеансу ADB, вручную или через вызов сервера Appium, завершается неудачей. Как решить эту проблему, чтобы возобновить автоматическое тестирование?

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 эмулятор-5558 оболочка запускается -W -n com.ferly.ferly / host .exp.exponent.experience.ShellAppActivity -S 'истекло время после 20000 мс'. Попробуйте увеличить время ожидания ADB до 20000 мс, представленное возможностью 'adbExecTimeout'

Выполнение команды в моей оболочке Windows: 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, где 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}
Предупреждение: действие не началось, текущее задание перенесено на фронт
Статус: ок
ThisTime: 0
TotalTime: 0
WaitTime: 872
Завершено

Обходные пути: удаление приложения Appium Settings на уязвимом устройстве после каждого теста позволяет запускать один тест на этом устройстве.

В чем заключается основная проблема, с которой я сталкиваюсь, и как ее решить? Если это имеет значение, все мои тестовые сценарии написаны на Python.

...