Intereting Posts
Помещение содержимого ниже AppBarLayout в координаторLayout ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError 2 пользователей, использующих одно и то же устройство и одно и то же приложение, но разные идентификаторы входа – у них есть другой идентификатор регистрации gcm? Светодиод уведомления Android не использует мой цвет Хранить GridView при возобновлении сна Как создать многоуровневый ListView в Android Как я могу получить SMS-сообщения от оператора телефона? Android: как изменить размер приложения: fabSize = "normal" для кнопки Floating Action Как добавить два атрибута android: name в тег приложения в файле манифеста? Varargs Kotlin Java interop не работает должным образом Как разбирать строку json в Android? Сохранение строки во внутренней памяти, а затем ее отображение Установка Xamarin Android не выполняется Как распределить выделение Renderscript с помощью OpenGL в Android Используйте камеру, подключенную через USB вместо встроенной камеры

Android uiautomator, чтобы щелкнуть ListView

У меня есть приложение для Android, которое использует uiautomator для выбора параметров в списке. ListView выглядит следующим образом:

Введите описание изображения здесь

Я пытаюсь щелкнуть элемент списка Full Benchmark, но мой код для него не распознает элемент списка. Это то, что у меня есть:

UiScrollable listView = new UiScrollable(new UiSelector().scrollable( true).className("android.widget.ListView")); UiObject item1 = listView.getChildByText(new UiSelector() .className(android.widget.TextView.class.getName()), "Full Benchmark"); item1.click(); 

Буду признателен за любую помощь!

Вот что я использую, чтобы найти, а затем щелкните элемент в списке:

 //Find and click a ListView item public void clickListViewItem(String name) throws UiObjectNotFoundException { UiScrollable listView = new UiScrollable(new UiSelector()); listView.setMaxSearchSwipes(100); listView.scrollTextIntoView(name); listView.waitForExists(5000); UiObject listViewItem = listView.getChildByText(new UiSelector() .className(android.widget.TextView.class.getName()), ""+name+""); listViewItem.click(); System.out.println("\""+name+"\" ListView item was clicked."); } 

Так что в вашем случае это будет

 clickListViewItem("Full Benchmark") 

Или:

 UiScrollable listView = new UiScrollable(new UiSelector()); listView.setMaxSearchSwipes(100); listView.scrollTextIntoView(name); listView.waitForExists(5000); UiObject listViewItem = listView.getChildByText(new UiSelector() .className(android.widget.TextView.class.getName()), "Full Benchmark"); listViewItem.click(); 

Есть два подхода к вышеупомянутой вещи.

Подход 1:

  1. Проанализируйте пользовательский интерфейс, а затем получите экземпляр списка. Скажем, список, содержащий текст, является третьим списком
  2. Создайте объект Uicollection, например UiCollection dummyList = new UiCollection(new UiSelector().className("android.widget.ListView").index(3));
  3. Создать объект для Benchmark UiObject dummyBenchmark = dummyList.getChildByText("Full Benchmark");

Подход 2:

 new UiScrollable( new UiSelector().scrollable(true) ).scrollIntoView( new UiSelector().text("Full BenchMark") ); new UiObject( new UiSelector().text("Full BenchMark") ).click(); 

Есть два TextViews внутри вложенной ViewGroup, наиболее вероятно LinearLayout. Это, по-видимому, отсутствует в критериях отбора.