Appium не находит элемент, пока его не коснутся на мобильном устройстве.Как найти элемент, для которого он не имеет фокуса? - PullRequest
0 голосов
/ 24 сентября 2019

Я новичок в автоматизации тестирования.Я пытаюсь автоматизировать пользовательский интерфейс и хочу нажать на меню гамбургера.

Я пробовал это с

1. MobileElement el1 = driver.findElement(By.xpath("//*[@content-desc='" + "Menu" + "']"));
    el1.click();
2. MobileElement el1 = driver.findElement(By.name("Menu)"));
    el1.click();
3. MobileElement el1 = (MobileElement) driver.findElementByXPath("//android.widget.ImageButton[@content-desc=\"Menu\"]");

во всех случаях, когда я получил ошибку для элемента не найден.

Но когда я нажимаю вручную на меню в рамках теста перед выполнением el1.click (), тест запускается успешно.Это похоже на то, как элемент меню фокусируется, а appium находит его.Так как выполнить это без нажатия или получения фокуса?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2019

Попробуйте найти элемент по его названию.В UI Inspector ищите раньше по имени или любому другому локатору.Если он успешно ищет с несколькими попытками.Иногда элемент имеет динамическую идентификацию.

0 голосов
/ 25 сентября 2019

Можете ли вы попробовать свой код еще раз, но на этот раз установите для automationName значение uiautomator2?Ваша проблема звучит так, как у меня, и переход от UIA1 к UIA2 (uiautomator2) решил эту проблему.UIA2, однако, немного медленнее обнаруживает элементы IMO.

0 голосов
/ 24 сентября 2019

Возможно, вам придется нажать по координатам в меню, чтобы сфокусировать его, а затем попытаться найти его с помощью опубликованного вами кода.

В зависимости от макета вашего пользовательского интерфейса, вы можете попробовать найтиэлемент рядом с меню, получить его координаты, а затем вызвать Tap с вашими координатами в качестве параметров.Таким образом, меню окажется в фокусе, и вы сможете его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...