UIAutomator ScrollToBeginning не прокручивает весь путь к началу
Я пишу UI-тест с использованием UI automator и столкнулся с проблемой, когда я пытаюсь прокрутить до начала NumberPicker, однако при использовании ScrollToBeginning или FlingToBeginning с переменным числом шагов NumberPicker прокручивает только два элемента, а затем перестает прокручивать Есть ли какая-либо причина, по которой такое поведение происходит последовательно, и есть ли способ исправить или обойти это?
1 ответ
Решение
Да, это известный Bug
из UI Automator
и ниже это обходной путь для этого:
Фрагмент статьи сверху:
Ошибка подана: https://groups.google.com/forum/?fromgroups=
Обходной путь, используя вспомогательный метод, ниже:
/**
* 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.");
}
}
}