我正在进行一些黑盒测试(使用UiAutomator 2.0 btw,扩展InstrumentationTestCase),我需要知道:
1 - 创建新活动时
2 - 知道它是否是第一次创建活动
我需要这个,因为我想在新活动出现时应用一些测试,但我希望这种检测是自动的,而不是手动的。
在Android L之前有UiDevice.getCurrentActivityName()方法。但是,现在它已被弃用(此外,它们甚至不能确保它适用于以前的版本)。这也发生在通过PackageManager获取活动的选项中。
因此,我想知道:
是否可以以编程方式检测新活动?如果是,可以在第一次活动发生时知道它。
如果不可能,我应该如何根据其UI定义活动?我应该改变多少个小工具来结束它的不同活动?
感谢。
编辑:为了清楚起见,我不想测试创建活动时会发生什么,我希望能够确定它是否是第一次此活动在运行中发生。
答案 0 :(得分:0)
以下是我目前针对此问题实现的内容,基于相同的Activity不会动态更改其UI View层次结构的假设。这对我来说没问题,似乎我只想区分UI更改,而不是活动所必需的。
1.建立签名以识别屏幕之间
signature1:FrameLayout;ListView;LinearLayout;RelativeLayout;...
signature2:FrameLayout;FrameLayout;FrameLayout;LinearLayout;...
2.然后,使用列表保留您已知的屏幕。
3.对于性能,您可以使用固定长度进行屏幕签名。
这个想法是指这个paper
如果adb对你好,你可以使用这个命令,
adb shell dumpsys activity
这是指另一篇帖子here