Appium (Android): Время ожидания при запуске после запуска 1 теста на устройстве

#android #adb #appium

#Android #adb #appium

Вопрос:

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

Appium desired_capabilities для моего устройства включает 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. Исходная ошибка: ‘Command’C:UsersJeffAppDataLocalAndroidsdkplatform-toolsadb.exe -Эмулятор P 5037 -s-5558 shell am start -W -n com.непосредственно.ферли /host.exp.exponent.experience.Время ожидания ShellAppActivity -S истекло через 20000 мс. Попробуйте увеличить время ожидания выполнения adb на 20000 мс, представленное возможностью ‘adbExecTimeout’

Запуск команды в моей оболочке Windows: C:Users<user>AppDataLocalAndroidsdkplatform-toolsadb.exe -P 5037 -s emulator-5556 shell am start -W -n com.ferly.ferly/host.exp.exponent.experience.ShellAppActivity -S , где emulator-5556 является затронутым устройством, выдает следующий результат:

Остановка: com.быстро.первый
запуск: намерение { cmp=com.первый.ферли /host.exp.exponent.experience.ShellAppActivity }
^ C (прерывание вручную после 2 минут ожидания.)

На моем эмуляторе приложение открывается и может использоваться, как я ожидаю, но сеанс adb не распознает, что приложение открыто.

Запуск той же команды, но для незатронутого устройства, скажем, emulator-5558, завершается успешно с этим результатом:

Остановка: com.быстро.первый
запуск: намерение { cmp=com.первый.ферли /host.exp.exponent.experience.ShellAppActivity }
Предупреждение: Действие не запущено, его текущая задача переведена на передний план
Статус: ok
На этот раз: 0
Общее время: 0
Время ожидания: 872
Завершено

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

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

Ответ №1:

Я увеличил время ожидания до 600 секунд, как показано ниже.

driver.manage().таймауты().implicitlyWait(600, TimeUnit.СЕКУНДЫ);

Проблема, похоже, исправлена для меня.