Я пытаюсь передать некоторые изображения на свое устройство iOS (то есть на ферму устройств AWS)
Метод push работает для симулятора iOS, но при запуске на AWS возникает исключение тайм-аута.
Размер изображения относительно небольшой (просто случайное изображение в качестве теста)
Это ошибка, которую я получаю при отправке из фермы устройств AWS:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not push the file within the given timeout 60000ms. Original error: operation timed out
Код для отправки изображения выглядит следующим образом:
String fileName = "testFile.jpeg";
File imageToPush = getImgFromUrl(fileName);
try{
driver.pushFile(fileName,imageToPush);
System.out.println("\n\n---IMAGE Push Successful---");
} catch (Exception e){
System.out.println("\n\nFailed to upload image to device\n\n");
System.out.println("\n\nReason:\n\n" + e.getMessage());
}
Этот фрагмент работает для симулятора iOS.
Возвращает исключение тайм-аута для устройства iOS в ферме устройств AWS. Как заставить его работать?
Есть некоторые проблемы совместимости с командой
driver.pushFile(..)
. Можете ли вы убедиться, что устройство и версия Appium, на которой вы работаете, совместимы? Кроме того, можете ли вы проверить, действительно ли файл существует там, где вы его ожидаете, на удаленном хосте?Эй, спасибо за ваш комментарий, файл существует, это точно, ради его тестирования я загружаю изображение из Интернета, которое тоже работало на симуляторе, так что проблема действительно с pushFile(..) на AWS: версия Appium: APPIUM_VERSION=1.19.0. Используемое устройство — Apple iPhone 12.
Что показывают ваши журналы appium? Можете ли вы обновить вопрос с помощью pastebin из них? Кроме того, какие версии WDA AWS Device Farm вы используете?
Эй, я не уверен, где найти версию WDA. (Полезный) журнал appium прямо в вопросе, до этого нет соответствующей информации.
Он определен в файле
.yml
, который вы используете.Я не очень хорошо знаком с этим сценарием. Если я правильно его понимаю (он использует много if-s, но я думаю, что это шаблон по умолчанию). В случае appium 1.19 он переходит к $DEVICEFARM_WDA_DERIVED_DATA_PATH_V6, который является v2.20.8 для WebDriverAgent
Что показывают ваши журналы Appium?
В логах, которые у нас есть, он показывает только логи с фермы устройств и testng/огурец. Если нет ошибки, мы получаем трассировку стека, и для этого я предоставил единственную соответствующую строку (исключение тайм-аута). Есть ли способ добавить к этому журналы сервера appium? если да, то я постараюсь сделать это завтра и предоставлю логи
AWS Device Farm предоставляет журналы для всего, что находится в папке
$DEVICEFARM_LOG_DIR
. Если вы используете один из примеров файлов testpec для appium, он включает файлappium.txt
для журналов Appium. Он будет отображаться в файле.zip
на консоли в разделе Файлы > Набор тестов > Артефакты клиента для выбранного задания.