Элемент мобильного приложения внезапно не может быть найден при автоматическом тестировании. Кто-нибудь еще сталкивался ⇐ Android
Элемент мобильного приложения внезапно не может быть найден при автоматическом тестировании. Кто-нибудь еще сталкивался
Я новичок в Appium. Извините, если этот вопрос уже существует.
Я столкнулся с необычной проблемой при поиске элемента на странице. Мы используем UISelectors для поиска элементов, но элементы на этой странице внезапно невозможно найти с помощью написанного нами автоматического теста. Проблема возникла около месяца назад, до этого тест проходил нормально. Самое смешное: если я вручную меняю страницы в приложении, пока тест ожидает, чтобы увидеть, виден ли элемент (что визуально кажется, но тест не может найти элемент) и возвращаюсь на рассматриваемую страницу , он легко находит элементы на странице.
С тех пор тест, проверяющий эту страницу, терпит неудачу примерно в 95 % случаев, и мы понятия не имеем, почему он продолжает давать сбой. Наш главный разработчик тестов просмотрел код и не смог понять, почему он не работает.
Элементы можно легко найти с помощью Appium Inspector, и они появляются каждый раз, когда мы загружаем страницу:
Инспектор Appium показывает страницу, на которой тест не может найти элементы
Мы пишем наши автоматические тесты на C#, а код для получения элемента пишется следующим образом:
public AppElement SimCardSubHeader => GetBy(UiSelectors.Text, «Информация о SIM-карте»);
Элемент используется для функции WaitUntilVisible. Эта функция используется для проверки того, станет ли элемент видимым через заданное время.
Elements.SimCardSubHeader.WaitUntilVisible(Settings.ExplicitWait, killOnFail: true);
WaitUntilVisible использует IsVisible, где установлены Драйвер и Селектор. Мы используем Appium. Наш главный разработчик тестов также просмотрел весь код и не смог найти никаких ошибок. Все остальные тесты проходят гладко, что соответствует тому, что основной разработчик тестов не смог найти никаких ошибок, а этот, похоже, внезапно провалился. Полученное сообщение об ошибке показывает, что элемент вызван правильно:
WaitUntilVisible — сбой после ожидания 46466 мс с помощью «ByAndroidUIAutomator(new UiSelector().text(»Информация о SIM-карте»))» из-за: время ожидания истекло через 35 секунд.
Если я использую новый UiSelector().text("Информация о SIM-карте") в Appium Inspector для поиска элемента, он работает без сбоев.
Другие тесты, использующие те же функции и способы получения элементов, работают отлично.
Я использовал разные способы вызова элемента, чтобы проверить, сработает ли это:
[*]public AppElement SimCardSubHeader => GetBy(UiSelectors.ResourceId, "sim-40"); [*]public AppElement SimCardSubHeader => GetByXPath("//android.widget.TextView[@text='Информация о SIM-карте']"); [*]public AppElement SimCardSubHeader => GetDescendant(GetById("index-4"), GetDescendant(GetById("app-comComponent-2"), GetDescendant(GetById("app-comComponent-4"), GetBy( UiSelectors.Text, "Информация о SIM-карте"))));
Однако ни одна из них не работала последовательно, и успех не удалось повторить. Если бы я снова переключил страницы, как описано выше, то элемент всегда был бы найден, но если бы я его не трогал, элементы не были бы найдены.
Я подозреваю, что элементы каким-то образом загружаются в течение первых нескольких секунд, а затем «уходят под ковер». Хотя приложение находится в постоянной разработке, я знаю, что на момент возникновения ошибки в приложение не вносилось никаких изменений, и разработчики не могут обнаружить проблему на своей стороне. Кто-нибудь еще сталкивался с этой проблемой? В идеале мы хотим избегать использования асинхронных функций.
Я новичок в Appium. Извините, если этот вопрос уже существует.
Я столкнулся с необычной проблемой при поиске элемента на странице. Мы используем UISelectors для поиска элементов, но элементы на этой странице внезапно невозможно найти с помощью написанного нами автоматического теста. Проблема возникла около месяца назад, до этого тест проходил нормально. Самое смешное: если я вручную меняю страницы в приложении, пока тест ожидает, чтобы увидеть, виден ли элемент (что визуально кажется, но тест не может найти элемент) и возвращаюсь на рассматриваемую страницу , он легко находит элементы на странице.
С тех пор тест, проверяющий эту страницу, терпит неудачу примерно в 95 % случаев, и мы понятия не имеем, почему он продолжает давать сбой. Наш главный разработчик тестов просмотрел код и не смог понять, почему он не работает.
Элементы можно легко найти с помощью Appium Inspector, и они появляются каждый раз, когда мы загружаем страницу:
Инспектор Appium показывает страницу, на которой тест не может найти элементы
Мы пишем наши автоматические тесты на C#, а код для получения элемента пишется следующим образом:
public AppElement SimCardSubHeader => GetBy(UiSelectors.Text, «Информация о SIM-карте»);
Элемент используется для функции WaitUntilVisible. Эта функция используется для проверки того, станет ли элемент видимым через заданное время.
Elements.SimCardSubHeader.WaitUntilVisible(Settings.ExplicitWait, killOnFail: true);
WaitUntilVisible использует IsVisible, где установлены Драйвер и Селектор. Мы используем Appium. Наш главный разработчик тестов также просмотрел весь код и не смог найти никаких ошибок. Все остальные тесты проходят гладко, что соответствует тому, что основной разработчик тестов не смог найти никаких ошибок, а этот, похоже, внезапно провалился. Полученное сообщение об ошибке показывает, что элемент вызван правильно:
WaitUntilVisible — сбой после ожидания 46466 мс с помощью «ByAndroidUIAutomator(new UiSelector().text(»Информация о SIM-карте»))» из-за: время ожидания истекло через 35 секунд.
Если я использую новый UiSelector().text("Информация о SIM-карте") в Appium Inspector для поиска элемента, он работает без сбоев.
Другие тесты, использующие те же функции и способы получения элементов, работают отлично.
Я использовал разные способы вызова элемента, чтобы проверить, сработает ли это:
[*]public AppElement SimCardSubHeader => GetBy(UiSelectors.ResourceId, "sim-40"); [*]public AppElement SimCardSubHeader => GetByXPath("//android.widget.TextView[@text='Информация о SIM-карте']"); [*]public AppElement SimCardSubHeader => GetDescendant(GetById("index-4"), GetDescendant(GetById("app-comComponent-2"), GetDescendant(GetById("app-comComponent-4"), GetBy( UiSelectors.Text, "Информация о SIM-карте"))));
Однако ни одна из них не работала последовательно, и успех не удалось повторить. Если бы я снова переключил страницы, как описано выше, то элемент всегда был бы найден, но если бы я его не трогал, элементы не были бы найдены.
Я подозреваю, что элементы каким-то образом загружаются в течение первых нескольких секунд, а затем «уходят под ковер». Хотя приложение находится в постоянной разработке, я знаю, что на момент возникновения ошибки в приложение не вносилось никаких изменений, и разработчики не могут обнаружить проблему на своей стороне. Кто-нибудь еще сталкивался с этой проблемой? В идеале мы хотим избегать использования асинхронных функций.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение