Appium: кнопка исчезает до того, как тест успеет нажать ее (iOS)

Совершенно новичок в изучении Appium на iOS в настоящее время с использованием Mocha и JavaScript, однако я наткнулся на этот камень преткновения. Наше приложение поддерживает воспроизведение видео, и как только вы переходите в полноэкранный режим, единственный способ выйти из полноэкранного режима - нажать в любом месте экрана и нажать появившуюся кнопку "Готово".

Проблема, с которой я столкнулся, заключается в том, что кнопка "Готово" появляется на экране в течение примерно 3,5 секунд, и к тому времени, когда тест пытается щелкнуть по ней, она уже исчезла из вида.

Есть ли что-то еще, уменьшив задержку по умолчанию между щелчками или выполнив 2 щелчка / касания в быстрой последовательности?

В настоящее время мой тест работает, если я снова вручную нажимаю на экран, как только кнопка "Готово" исчезает из поля зрения, но я не могу автоматизировать процесс.

Мой код в настоящее время выглядит так:

//Opens the video in full screen
.elementByXPath("//*[@name='Live']").click()
.elementByXPath("//UIAWindow[1]/UIAElement[1]").click()

//Delay of 5 seconds to allow video to play
.sleep(5000)

//Press the video screen to get 'Done' button to appear
.elementByXPath("//UIAWindow[1]/UIAScrollView[1]").click()

//Attempt to click 'Done' button; it always disappears before it can be clicked
.elementByXPath("//*[@name='Done']").click()

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

Спасибо

1 ответ

Проблема здесь в следующем:

Вы пытаетесь найти кнопку "Готово" после нажатия в любом месте экрана, и appium требуется несколько секунд, чтобы найти элемент.

Решение:

Если расположение кнопки "Готово", которая появляется каждый раз, одинаково, то вы можете выполнить действие щелчка, используя координаты X и Y вместо поиска фактического элемента.

Найдите координаты X и Y кнопки "Готово" вручную (однократный процесс).

а затем нажмите на X и Y координаты.

driver.tap(numberOfFingers,X-co-ordinate,Y-co-ordinate,durationInMilliseconds)

например driver.tap(1,200,300,1000)

Надеюсь, это поможет:)

Другие вопросы по тегам