UIAutomator ScrollToBeginning не прокручивает весь путь до начала



Я пишу тест пользовательского интерфейса с помощью UI automator и столкнулся с проблемой, когда я пытаюсь прокрутить до начала NumberPicker, однако при использовании ScrollToBeginning или FlingToBeginning с различным количеством шагов, NumberPicker прокручивает только два элемента, а затем останавливает прокрутку. Есть ли какая-либо причина, по которой это поведение происходит постоянно, и есть ли какой-либо способ исправить или обойти его?

516   1  

1 ответ:

Да, это известный Bug из UI Automator и ниже приведен обходной путь для этого:

Ссылка

Фрагмент из статьи выше:

Ошибка подана: https://groups.google.com/forum/?fromgroups=#! topic/adt-dev/TjeewtpNWf8

Обходной путь, используя вспомогательный метод, ниже:

/**
 * Launches an app by it's name. 
 * 
 * @param nameOfAppToLaunch the localized name, an exact match is required to launch it.
 */
protected static void launchAppCalled(String nameOfAppToLaunch) throws UiObjectNotFoundException {
    UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
      // Set the swiping mode to horizontal (the default is vertical)
      appViews.setAsHorizontalList();
      appViews.scrollToBeginning(10);  // Otherwise the Apps may be on a later page of apps.
      int maxSearchSwipes = appViews.getMaxSearchSwipes();

      UiSelector selector;
      selector = new UiSelector().className(android.widget.TextView.class.getName());

      UiObject appToLaunch;

      // The following loop is to workaround a bug in Android 4.2.2 which
      // fails to scroll more than once into view.
      for (int i = 0; i < maxSearchSwipes; i++) {

          try {
              appToLaunch = appViews.getChildByText(selector, nameOfAppToLaunch);
              if (appToLaunch != null) {
                  // Create a UiSelector to find the Settings app and simulate      
                  // a user click to launch the app.
                  appToLaunch.clickAndWaitForNewWindow();
                  break;
              }
          } catch (UiObjectNotFoundException e) {
              System.out.println("Did not find match for " + e.getLocalizedMessage());
          }

          for (int j = 0; j < i; j++) {
              appViews.scrollForward();
              System.out.println("scrolling forward 1 page of apps.");
          }
      }
}

Comments

    Ничего не найдено.