2014-02-10 2 views
0

Я использую uiautomator для включения Wi-Fi-коммутатора, а затем подключаюсь к WiFi AP.
То, что я хочу сделать, это:Вид прокрутки управления при наличии двух списков

  1. Включите WiFi
  2. Подключение к Wi-Fi точки доступа

Но проблема страница настройки в планшете есть два ListView.
Когда я включаю WiFi, мне нужно управлять левым списком.
И после этого мне нужно управлять правильным списком, чтобы подключиться к Wi-Fi AP.

Мне нужно прокрутить, чтобы просмотреть весь элемент списка, но я всегда этого не делаю.
Я попытался указать listview экземпляром (0) & экземпляра (1), но иногда это не получится.

Ниже приведен код:

public void TurnOn() 
{ 
    try { 
     UiScrollable settingsList = new UiScrollable(new UiSelector().className(android.widget.ListView.class.getName()).instance(0).scrollable(true)); 
     UiObject btItem = settingsList.getChildByText(new UiSelector().className(android.widget.LinearLayout.class.getName()),"Wi-Fi", true); 
     UiObject btSwitch = btItem.getChild(new UiSelector().className(android.widget.Switch.class.getName())); 
     if(!btSwitch.isChecked()) 
     { 
      btSwitch.click(); 
      sleep(3000); 
     } 
     else System.out.println("Wifi is already enabled"); 

    } catch (UiObjectNotFoundException e) { 
     System.out.println("Can't find the Wi-Fi switch"); 
    } 
} 
public void ConnectAP()//No password Ap 
{ 
    UiScrollable wifiList = new UiScrollable(new UiSelector().className(android.widget.ListView.class.getName()).instance(1).scrollable(true)); 
    if(!wifiList.exists()) wifiList = new UiScrollable(new UiSelector().scrollable(true)); 
    else System.out.println("Its tablet"); 

    UiSelector selector = new UiSelector().className(android.widget.RelativeLayout.class.getName()); 
    UiObject btItem = null; 
    int maxSearchSwipes = wifiList.getMaxSearchSwipes(); 
    for (int i = 0; i < maxSearchSwipes && i<10; i++) 
    { 
     try { 
      btItem = wifiList.getChildByText(selector, "Guest"); 
      if(btItem.getChildCount()==2) System.out.println("Wifi is already connected to Guest AP or not in range."); 
      else { 
       btItem.clickAndWaitForNewWindow();   
       sleep(3000); 
      } 
      break; 
     } catch (UiObjectNotFoundException e) { //Do nothing  
     } 
     for (int j = 0; j < i; j++){ 
      try { 
       wifiList.scrollForward(); 
      } catch (UiObjectNotFoundException e) { 
       System.out.println("Can't scrollForward"); 
      } 
     } 
    } 
    if(btItem == null) System.out.println("Can't find Guest AP."); 
} 

Большую часть времени он работает, но когда-нибудь получить контроль над код неверном ListView.
Нужны ценные предложения. Спасибо всем!

ответ

0

Я выясняю это!

Изменить исходный код

UiScrollable wifiList = new UiScrollable(new UiSelector().className(android.widget.ListView.class.getName()).instance(1).scrollable(true)); 

в

UiScrollable wifiList = new UiScrollable(new UiSelector().className(android.widget.ListView.class.getName()).instance(1)); 

И это работает!

Смежные вопросы