2013-06-07 44 views
5

Tôi có một ứng dụng Android sử dụng bộ tinh chỉnh để nhấp vào các tùy chọn trong chế độ xem danh sách. ListView trông như thế này:uiautomator android để nhấp vào ListView

enter image description here

Tôi cố gắng để nhấp vào mục danh sách Benchmark Full, nhưng mã của tôi cho nó không nhận ra mục danh sách. Đây là những gì tôi có:

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(); 

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào!

Trả lời

7

Đây là những gì tôi sử dụng để tìm kiếm, và sau đó nhấp vào một mục trong một listview:

//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."); 
} 

Vì vậy, trong trường hợp của bạn nó sẽ là

clickListViewItem("Full Benchmark") 

Hoặc:

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

Có cách nào để cuộn và tìm phần tử trong danh sách dựa trên văn bản bắt đầu hay không. Vì mã này cần tên chính xác của mục. trong nhiều trường hợp là "Ngôn ngữ và dữ liệu nhập" có văn bản khác nhau trong các thiết bị khác nhau. Làm thế nào để xử lý tình huống đó. –

+0

U có thể nhận chuỗi tìm kiếm từ các tài nguyên với sự trợ giúp của @Rule để hỗ trợ các ngôn ngữ khác nhau –

0

Có hai TextView trong một ViewGroup lồng nhau có nhiều khả năng là LinearLayout nhất. Điều này dường như bị thiếu trong tiêu chí lựa chọn.

2

Có hai cách tiếp cận cho điều trên.

Cách tiếp cận 1:

  1. Phân tích UI và sau đó nhận được sự thể hiện của giao diện danh sách nói xem danh sách có chứa văn bản là listview 3
  2. Tạo một đối tượng Uicollection như UiCollection dummyList = new UiCollection(new UiSelector().className("android.widget.ListView").index(3));
  3. Tạo đối tượng cho Điểm chuẩn UiObject dummyBenchmark = dummyList.getChildByText("Full Benchmark");

Cách tiếp cận 2:

new UiScrollable(
    new UiSelector().scrollable(true) 
).scrollIntoView(
    new UiSelector().text("Full BenchMark") 
); 
new UiObject(
    new UiSelector().text("Full BenchMark") 
).click(); 
Các vấn đề liên quan