2013-06-07 4 views
5

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

enter image description here

Я пытаюсь нажать на полный 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(); 

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

ответ

7

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

//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(); 
+0

Есть ли способ прокрутки и поиска элемента в списке на основе исходного текста. Поскольку для этого кода требуется точное имя элемента. Во многих ситуациях «Язык и ввод» имеют разные тексты на разных устройствах. Как справиться с этой ситуацией. –

+0

U может получить поиск String из ресурсов с помощью @Rule для поддержки разных языков –

0

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

2

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

Подход 1:

  1. Анализ пользовательского интерфейса, а затем получить экземпляр в виде списка сказать, представление списка, содержащего текст является третьим ListView
  2. Создать объект Uicollection как UiCollection dummyList = new UiCollection(new UiSelector().className("android.widget.ListView").index(3));
  3. Создать объект для бенчмарка 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(); 
Смежные вопросы