最近のアプリで良く使用されている以下のようなDrawerLayoutをUI Automatorで試験する際の注意点です。

一見、何事もなくスクロールすることが可能のように見えますが、以下の黄色い箇所がDrawerLayoutとステータスバー部分のDrawer部分が重複しているために、UiObject.swipeDownを実行するとステータスバーのDrawerが反応してしまい、通知領域が表示されてしまいます。


回避するには、UiObject.swipeDown以外のメソッドでスクロールしてあげる必要があります。

UiDevice.swipeを使用した回避策: 明示的にswipeする位置を指定して回避
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject drawerLayoutObject = device.findObject("com.android.settings:id/left_drawer");
Rect drawerLayoutBounds = drawerLayoutObject.getVisibleBounds();
device.swipe(drawerLayoutBounds.centerX(), drawerLayoutBounds.centerY(), drawerLayoutBounds.centerX(), drawerLayoutBounds.centerY() - 100, 50); // 移動量の100とstepsの50は暫定
あと、UiScrollable.scrollIntoViewやscrollTextIntoViewは上記の事象は発生しなかったので、これらを使用するのも良いかと。

コメントの投稿