【问题标题】:XCUI Test: How to fetch List of elements from the iOS screenXCUI 测试:如何从 iOS 屏幕获取元素列表
【发布时间】:2018-05-22 14:36:55
【问题描述】:

我最近开始使用 XCUI 测试设置在 iPhone 真实设备上自动化 iOS 应用程序。

我的应用在主页中包含 5 个屏幕,每个屏幕都包含一个唯一的卡号及其余额,因此我必须从屏幕中获取卡号并使用我输入的(预期的)卡号进行验证,如果两者相同,则我必须单击卡片屏幕,否则如果两者不同,则我必须向右滑动到第二个屏幕并执行相同的过程。

我能够在 android 中完美地自动化这个场景,因为在 android 中,每个屏幕都有一个唯一的卡号,但是当我检查 iOS 应用程序上的卡号屏幕时,它显示了附加到应用程序的所有卡列表。在这种情况下,我很难从应用程序中获取卡号并使用我输入的卡号进行验证。请参阅下面的代码,它已经用于 android

String oysterCardVisibleNumberOnApp= data.get("PrestigeCardNumber");


while(!action.getText(HomePage.oysterCardNumber,"oysterCardNumber").equalsIgnorecase(oysterCardVisibleNumberOnApp))){
      action.swipeRightToLeft();
     }

如果有人知道如何从 iOS 应用程序中检索元素/卡片列表,那就太好了,请告诉我。或者如果您知道 XCUI 设置中的任何新方法将帮助我实现这一目标,请告诉我。您的帮助将不胜感激:)

请查看下面的 Android 屏幕和 iOS 屏幕图片以获得更清晰的信息

Android Screen

iOS Screen

谢谢

【问题讨论】:

    标签: java appium-ios appium-android xcuitest


    【解决方案1】:

    您也许可以为此使用 xcode 中的 Accessibility Inspector:

    https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html

    根据您在应用中选择的区域,它会返回每个区域的详细说明。但它带来什么取决于您的应用程序的结构。我试图在我自己的 ios 应用程序中做类似的事情,这对我有点帮助。

    【讨论】:

    • 感谢您向我指出辅助功能检查器的概念,但我想知道在我看到此辅助功能检查器仅适用于 iOS 模拟器版本的每个地方。我想知道这是否也适用于检查 iPhone 真实设备,因为我正在 iPhone 真实设备上测试我的应用程序
    • @kumar 没问题。不幸的是,您无法在真实设备上使用它,但我发现了一个有趣的页面,介绍了使用 Apples VoiceOver 技术在真实设备上测试您的应用程序:developer.apple.com/library/content/technotes/…
    【解决方案2】:

    例如,如果您在断点处停止并使用:

    po XCUIApplication().descendants(matching: .any)

    在调试控制台中,您将获得来自主应用程序元素的所有后代元素的列表。它还可以让您大致了解结构。

    然后您可以将.any 更改为更具体的元素类型,例如.textField.buttons

    【讨论】:

      【解决方案3】:

      您可以使用XCUIApplication().debugDescription 打印 XCUITest 看到的 UI 树。您还可以更新应用程序代码来为您的 UI 元素设置自定义标识符(这些仅由 XCUITest 看到)。比如card-1等。

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-31
        • 2019-11-14
        • 1970-01-01
        • 2017-10-31
        • 1970-01-01
        相关资源
        最近更新 更多