3

我正在做一些黑盒测试(顺便说一句,使用 UiAutomator 2.0,扩展 InstrumentationTestCase),我需要知道:

1 - 创建新活动时

2 - 知道它是否是第一次创建活动

我需要这个,因为当出现新活动时我想应用一些测试,但我希望这种检测是自动的,而不是手动的。

在 Android L 之前,有 UiDevice.getCurrentActivityName() 方法。但是,现在它已被弃用(此外,他们甚至不确保它适用于以前的版本)。这也发生在通过 PackageManager 获取活动的选项中。

因此,我想知道:

  • 是否可以以编程方式检测新活动?如果是这样,有可能知道它是否是第一次发生活动。

  • 如果不可能,我应该如何根据它的 UI 定义一个活动?我应该更改多少小部件才能得出结论它是不同的活动?

谢谢。

编辑:为了清楚起见,我不想测试创建活动时会发生什么,我希望能够确定它是否是第一次在运行中发生此活动。

4

1 回答 1

0

这是我目前针对这个问题实现的,基于相同的 Activity 不会动态改变它的 UI View 层次结构的假设。这对我来说没问题,似乎我只想区分 UI 更改,而不是活动所必需的。

1.建立签名以在屏幕之间进行识别

signature1:FrameLayout;ListView;LinearLayout;RelativeLayout;...
signature2:FrameLayout;FrameLayout;FrameLayout;LinearLayout;...

2.然后,使用列表来保留您已知的屏幕。

3.对于性能,您可以使用固定长度的屏幕签名。

这个想法是参考这篇论文

如果 adb 对你没问题,你可以使用这个命令,

adb shell dumpsys activity

这指的是另一个帖子here

于 2015-11-20T06:36:16.850 回答