版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ricky_yangrui/article/details/88980739
首先,我们封装一个Toast
public static boolean waitForToast(String toast, long timeout) {
return waitForToast(toast, Function::identity, timeout);
}
public static boolean waitForToast(String toast, Runnable r, long timeout) {
UiAutomation automation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
try {
AccessibilityEvent event = automation.executeAndWaitForEvent(
r,
e -> isToastShow(e, toast),
timeout);
event.recycle();
return true;
} catch (TimeoutException e) {
return false;
}
}
private static boolean isToastShow(AccessibilityEvent event, String toast) {
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
Parcelable parcelable = event.getParcelableData();
if (!(parcelable instanceof Notification)) { // without Notification is Toast
String toastMessage = "" + event.getText().get(0);
Log.d(TAG, toastMessage);
return toastMessage.contains(toast);
}
}
return false;
}
接下来,我们就可以直接调用了
@Test
public void testFileManager_0015_checkFavoritesFunction() throws UiObjectNotFoundException {
// 查看根目录的收藏功能,验证收藏功能
FileListPage listPage = mHomePage.openAllPage().openFileListPage();
String newFolderName = "Android";
listPage.addToFavorites(newFolderName);
boolean isAddFavorites = AutomatorHelper.waitForToast("Added to Favorites", 6000);
Assert.assertTrue("add folder to favorites fail", isAddFavorites);
我使用了POM的写法,FileListPage 这个页面的操作我就不贴出来了,主要看后面的判断如何获取toast.