我正在使用Android自动化在GridView上执行swipeUp(),如下所示,
。onView(withId(R.id.grid))执行(swipeUp());它工作得很好。
上面的网格动态生成TableLayout。我无法使用onView或onData在GridView,TableLayout,TableRowLayout上执行scrollTo(),因为我没有在层次结构中定义ScrollView,它抛出PerformException:错误执行'加载适配器数据'在视图' id:com.app.mobile:id / grid'。
当我尝试在swipeUp()之后访问TableLayout,TableRowLayout内容时,它抛出了java.lang.NullPointerException。没有swipeUp(),可以看到两行表,并且isDisplayed()事件运行完美,但我想访问剩余的行。
我想在swipeUP()之后聚焦到元素。
代码:
expMonitor =getInstrumentation().addMonitor(MyActivity.class.getName(), null, false);
expActivity = getInstrumentation().waitForMonitorWithTimeout(expMonitor, 3000);
Matcher<View> viewMatcher_layout = findChildof(withId(R.id.grid), 2);
Matcher<View> viewMatcher_table = findChildof(viewMatcher_layout, 1);
onView(withId(R.id.grid)).perform(swipeUp());
for(int currentIndex = 0;currentIndex<5;currentIndex++){
Matcher<View> viewMatcher_row_layout = findChildof(viewMatcher_table, currentIndex);
onView(findChildof(viewMatcher_table,currentIndex)).check(matches(isDisplayed()));
Matcher<View> viewMatcher_text = findChildof(viewMatcher_row_layout, 0);
if (findChildof(viewMatcher_text, 0).equals(notNullValue()))
onView(findChildof(viewMatcher_text, 0)).check(matches((isDisplayed())));
if (findChildof(viewMatcher_text, 1).equals(notNullValue()))
onView(findChildof(viewMatcher_text, 1)).check(matches((isDisplayed())));
if (findChildof(viewMatcher_text, 2).equals(notNullValue()))
onView(findChildof(viewMatcher_text, 2)).check(matches((isDisplayed())));
}