如何获取移动应用程序 (Android/iOS) 中使用的 ui 元素的 ID、名称或 x 路径以进行移动自动化测试?

How can I get IDs, names or x paths for ui elements used in a mobile app (Android/iOS) for mobile automation testing?

我想知道如何获取移动应用程序中使用的 UI 元素的 ID 或名称,这些元素用于移动自动化测试,例如 appium、monkey-talk、xamarian 等

我的解释是针对我的系统 (Windows 7),但我的解释也应该很容易翻译到其他系统。

先决条件:

  • 当你想做 Android 自动化测试时,你应该总是安装 Android SDK,所以我假设你已经这样做了。让我们调用 sdk 文件夹的路径 <ANDROID_HOME>(包括 sdk 文件夹本身)
  • 运行<ANDROID_HOME>/SDK Manager.exe。 Select 最新的 Android SDK 工具和 Android SDK 平台工具并安装它们
  • 连接您要测试的设备:
    • 要么 运行 模拟器 - 它会自动连接到您的系统中
    • 或者连接物理设备并安装正确的 USB 驱动程序。您可以通过 运行 命令 <ANDROID_HOME/platform-tools/adb.exe devices 验证设备是否已连接 - 如果列表中至少有一个设备,您就可以开始了。

一旦你拥有了所有这些:

运行<ANDROID_HOME>/tools/uiautomatorviewer.bat。这将打开一个屏幕,您可以在其中截取连接设备的屏幕截图。见下图:

截图是点击​​紫色矩形下方的按钮截取的,是我人为添加的。红色的是工具添加的,因为我将鼠标悬停在感兴趣的元素上。您可以观察右侧的元素属性。这些通常是您用于测试本机应用程序的属性。

如果您想测试 WebView then it would be better if you use Chrome remote debugging 中加载的元素以获得正确的选择器。


脚注:

我看到你正在迈出移动自动化测试的第一步,这是我非常感兴趣的领域,我可以建议你看一下 ATMOSPHERE Android 测试自动化框架。 免责声明:我是它的创造者之一。仍然 - 它是免费提供和开源的。我们也相信它提供了其他框架不支持的功能,并且很容易上手,所以我希望它对您有用!

C#

就我而言,这段代码解决了我的问题:

    private IApp _app = ScenarioContext.Current.Get<IApp>("Application");

    private readonly ILoginScreen _loginScreen;
    private readonly IMainMenuScreen _mainMenuScreen;

    public Login(ILoginScreen loginScreen, IMainMenuScreen mainMenuScreen)
    {
        _app.Repl();
        _loginScreen = loginScreen;
        _mainMenuScreen = mainMenuScreen;
    }

我正在使用 Xamarin 使用 Gherkin 语言,其中 Repl() 命令会打开一个新的 cmd,您可以在其中键入树命令并在您所在的特定屏幕上获取 ui 元素的树结构。如下图所示:

第 1 步:通过单击检查器按钮启动 appium 检查器:

第二步:设置APK/IPA文件路径(应用文件路径)如下图:

第 3 步:单击“开始会话”,现在您将导航到“记录器”window:

单击应用程序 UI 并执行所需的操作“选定元素”选项卡,即点击、用于输入文本的发送键等。

选定的 UI 元素将在录制完我们可以导出 Java 文件的所有元素的 UI 元素后导出到记录器选项卡。