2015-08-24 2 views
0

Я пытаюсь повторить просмотр списка в оболочке adb. Я использую uiautomator, однако кажется, что у меня есть больше элементов, чем то, что захвачено в устройстве. Если бы я использовал прокрутку, я мог бы получить доступ к элементам. Но так или иначе мне не нужно прокручивать и просто перебирать элементы списка?Итерирующий вид списка в adb - uiautomator

enter image description here

Этот захват экрана осуществляется uiautomator.

Отрывок из моего кода.

>>> a = d(index = 0, className = 'android.widget.ListView') 
>>> for i in a.child(): print i.info 

Это, похоже, не в состоянии распечатать что-либо или повторить просмотр списка.

ответ

1

Я использую следующий код, чтобы найти контакт по имени в телефонной книге [который является элементом списка]. Надеюсь, этот код поможет вам. В настоящий момент я просматриваю каждый элемент и, если запрашиваемый элемент доступен, я выхожу из цикла, иначе я обманываю. Я не уверен, насколько это поможет, но это даст базовую идею. Я использую appium для некоторой автоматизации пользовательского интерфейса. Кто-то, с лучшими знаниями, пожалуйста, руководствуйтесь или корректируйте, если есть какой-либо способ ускорить эту деятельность, чтобы получить список всех элементов списка. Это поможет мне также

public Boolean Get_PhContact_ByName(MobileDriver d, String strName){ 
    Boolean bFoundName = false; 
    while(bFoundName == false) 
    { 
     List <WebElement> ContactList = d.findElements(By.id(ID_MENU_CONTACT_NAMES)); 
     int lstSize = ContactList.size(); 
     System.out.println(String.valueOf(lstSize)); 
     for(int iIndex = 0; iIndex < lstSize; iIndex++) 
     { 
      WebElement xName = ContactList.get(iIndex); 
      String strNameOrNumber = xName.getText().replaceAll("(?:\\n|\\r)", "").trim(); 
      System.out.println(strNameOrNumber); 
      if(strNameOrNumber.equals(strName)) 
      { 
       System.out.println("Found Name" + strName); 
       xName.click(); 
       bFoundName = true; 
      } 
     } 
     if(bFoundName == false) 
      PerformSwipeDown(d); 
    } 
    return true; 
} 


public void PerformSwipeDown(MobileDriver d) 
{ 
    String originalContext = d.getContext(); 
    d.context("NATIVE_APP"); 

    org.openqa.selenium.Dimension size = (org.openqa.selenium.Dimension) d.manage().window().getSize(); 
    int starty = (int) (size.height * 0.8); 
    int endy = (int) (size.height * 0.20); 
    int startx = size.width/2; 
    ((AndroidDriver)d).swipe(startx, starty, startx, endy, 1000); 
    d.context(originalContext); 
} 

public void PerformSwipeUp(MobileDriver d) 
{ 
    String originalContext = d.getContext(); 
    d.context("NATIVE_APP"); 

    org.openqa.selenium.Dimension size = (org.openqa.selenium.Dimension) d.manage().window().getSize(); 
    int starty = (int) (size.height * 0.20); 
    int endy = (int) (size.height * 0.8); 
    int startx = size.width/2; 
    ((AndroidDriver)d).swipe(startx, starty, startx, endy, 1000); 
    d.context(originalContext); 
}