使用ADB时如何转储整个屏幕?

时间:2019-06-17 19:33:44

标签: android adb uiautomator

我正在尝试使用ADB获取整个屏幕的层次结构。

如果我使用adb shell uiautomator dump,则只会得到当前视图,而不是整个屏幕。例如,如果我转储当前视图,然后向下滚动并再次转储,则将获得不同的输出。我想转储整个屏幕,而不必向下滚动并再次转储。

1 个答案:

答案 0 :(得分:0)

  

如果我使用的是gmail应用程序,则在我的收件箱中,我会列出当前正在查看的电子邮件列表。转储只会给我那封电子邮件列表,我想知道是否有一种方法可以在收件箱中获取所有电子邮件。

通常,不会。

以您的Gmail示例为例,假设Gmail应用程序以某些标签显示了对话,并且该标签包含343,140,​​189个对话。

(垃圾邮件,无土粉石?)

我猜您认为Gmail应用程序的UI包含一个滚动列表,其中包含343,140,​​189行,而滚动只是更改了可见的343,140,​​189行中的一个。

并非如此,原因有很多,例如应用程序内存不足。

Android中的大多数滚动列表都使用RecyclerViewListView之类的类。这些类回收其行。因此,除了343,140,​​189行以外,将只有很少的行足以填满整个屏幕,也许还有更多行。当用户滚动并从屏幕上滚动出行时,它们将被回收:填充新内容并作为“新”行输入。从视觉上看,效果与343,140,​​189行没有区别。从编程的角度来看,差异是巨大的。从uiautomator的角度来看,编程才是最重要的。