Исключение в текстовых записях при запуске тестов iOS на XTC

Мы пытаемся настроить тестовые запуски в Xamarin Test Cloud и очень часто сталкиваемся с указанной ниже проблемой.

Например, для сценария входа в систему иногда не отображается клавиатура для ввода текста, и я получаю следующее исключение:

Ошибка при выполнении EnterText ("XXXXXX")

Исключение: System.Exception: для ввода текста не отображается клавиатура. в Xamarin.UITest.iOS.iOSApp + c__AnonStorey5. ‹> m__0 ()‹ 0x69f0838 + 0x0011f> в: 0 в Xamarin.UITest.Utils.ErrorReporting.With (System.Action func, System.Object [] args, System.String memberName) ‹0x69e0988 + 0x00030> в: 0

Я не считаю, что добавление времени ожидания - лучшее решение. Вы столкнулись с этой проблемой? Любые предложения о том, какое лучшее решение для этого?


person Kiran    schedule 09.09.2016    source источник
comment
Можете ли вы показать свой синтаксис для теста и дать дополнительную информацию о том, почему вы не думаете, что добавление времени ожидания поможет?   -  person user62171    schedule 04.10.2016
comment
Большое спасибо, Кент, за твой ответ. Мы исправили проблему (на данный момент), добавив «waitforkeyboard» перед всеми текстовыми записями. Время ожидания не подходило для нас, потому что было сложно найти оптимальное время - иногда это 2 секунды, иногда 5, а иногда 10 (все это было для тестов, запускаемых в облаке, поэтому у меня нет дополнительной информации, такой как журналы сбоев. и т. д .; не вижу эту ошибку при локальном запуске.   -  person Kiran    schedule 05.10.2016
comment
Обычно тестовые прогоны в облаке занимают больше времени, чем локально; например, в этом руководстве отмечается, что время ожидания по умолчанию для локального UITest составляет 15 секунд, а в Test Cloud - 1 минуту. Однако, если вы вручную установите тайм-аут, который их отменяет: developer.xamarin .com / guides / testcloud / uitest / working-with /.   -  person user62171    schedule 05.10.2016
comment
@Kiran, Ради будущих пользователей / зрителей, если приведенный ниже ответ решает вашу проблему, отметьте его как решение.   -  person Matthew Regul    schedule 17.01.2017


Ответы (1)


Вы используете Xamarin.UITest 2.0.0?

Добавить длинный WaitForElement()

  • Как предложил Кент в комментариях выше, используйте более длинный WaitForElement. Может, 90 секунд? Если элемент будет найден за более короткое время, вы не будете ждать полные 90 секунд.
  • app.WaitForElement(c=>c.Marked("success_message_label"), "Did not see the success message."), new TimeSpan(0,0,1,30,0));
  • https://developer.xamarin.com/guides/testcloud/uitest/working-with/timeouts/

Попробуйте Thread.Sleep (миллисекунды) в UITest

  • Если вам не нравится использовать WaitForElement, вы всегда можете использовать Thread.Sleep(5000);, чтобы приостановить UITest, чтобы телефон догнал. Лично я сам этим пользуюсь при работе со старыми телефонами.
  • https://developer.xamarin.com/api/member/System.Threading.Thread.Sleep/p/System.Int32/

Также обратите внимание (для будущих зрителей), что при локальном тестировании на iOS

  • IApp.EnterText завершится ошибкой, если симулятор настроен на использование hardware keyboard. Перед локальным запуском UITests убедитесь, что симулятор настроен на использование программной клавиатуры.
  • Симулятор >> Оборудование >> Клавиатура >> Снимите флажок "Подключить аппаратную клавиатуру"
  • https://developer.xamarin.com/guides/testcloud/uitest/working-with/entering-text/#Disable_the_Hardware_Keyboard
person Matthew Regul    schedule 19.10.2016