2

我有一个多显示场景,最后我想用 Appium 进行测试。但是,现在我已经在使用 UiAutomatorViewer 苦苦挣扎。

这是我的场景:

  • 我已经设置了带有辅助显示器的 Android 模拟器:左侧屏幕启动了 Chrome,右侧的 YouTube(只是一些随意的应用程序)。

在此处输入图像描述

  • 当我启动 uiautomatorviewer(或使用 uiautomator2 的 appium)时,它只会检索我“主”显示的内容,我可以访问此屏幕上的元素。Appium 向我展示了相同的内容。

在此处输入图像描述

我不知道,我如何也可以访问辅助显示器。在一个完美的方法中,我基本上能够识别所有显示器上的所有应用程序。这有可能吗?

此外,我需要测试多个应用程序。因为像 Espresso 这样的单一应用程序方法对我不起作用。

4

1 回答 1

0

根据源代码,UI automator viewer 转储活动窗口的视图层次结构,屏幕截图是默认显示的屏幕截图。

如果您想使用 ui automator viewer 并分析正确​​的屏幕截图(以及相应的 UI 层次结构),一种可能的解决方法可能是以编程方式创建这两个文件并将它们提供给 ui automator viewer:

adb shell am start com.google.android.calendar --display 0
adb shell screencap -d 0 -p /sdcard/screencapture0.png
adb pull /sdcard/screencapture0.png .
adb shell uiautomator dump 
adb pull /sdcard/window_dump.xml
mv window_dump.xml window_dump0.uix

现在您可以在 ui automator viewer 上选择“打开”并选择screencapture0.pngand window_dump0.uix

通过在辅助显示器上打开应用程序,焦点将移动到另一个显示器,您可以重新调用相同的命令来获取 2 个文件:

adb shell am start com.google.android.calendar --display 1
adb shell screencap -d 1 -p /sdcard/screencapture1.png
adb pull /sdcard/screencapture1.png .
adb shell uiautomator dump 
adb pull /sdcard/window_dump.xml
mv window_dump.xml window_dump1.uix

这次提供给 ui automator viewer 的文件是screencapture1.pngwindow_dump1.uix.

不确定是否也可以利用相同的方法来针对特定屏幕执行测试。

于 2021-09-05T17:27:44.217 回答