XCUI测试:如何从iOS屏幕中获取元素列表

时间:2017-12-08 10:51:16

标签: java appium-ios appium-android xcuitest

我最近开始使用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

谢谢

3 个答案:

答案 0 :(得分:1)

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

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

在调试控制台中,您将获得主Application元素中所有后代元素的列表。它还可以让您对结构有一个松散的看法。

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

答案 1 :(得分:0)

您可以在xcode中使用辅助功能检查器:

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

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

答案 2 :(得分:0)

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