使用NSPrediccate选择任何一个输出

时间:2016-10-10 15:26:30

标签: ios swift ui-automation

当我在XCode UI Test中执行以下步骤时。我得到了多个输出。

print(collectionViews.staticTexts.element(matching: NSPredicate(format: "(%@ IN identifiers), "price")).debugDescription)

输出:

Find: Elements matching predicate '"price" IN identifiers'
          Output: {
            StaticText 0x608000375f00: traits: 8589934656, {{24.0, 384.0}, {197.0, 27.5}}, identifier: 'price', label: '123'
            StaticText 0x6080003768c0: traits: 8589934656, {{24.0, 762.0}, {197.0, 27.5}}, identifier: 'price', label: '456'
          }

无论如何,我可以使用swift获得单输出而不是多输出。我正在尝试打印标签 123

输出我正在寻找: 123

注意:标签值不断变化。

1 个答案:

答案 0 :(得分:0)

如果您在测试期间知道元素的索引,那么您可以根据索引路径定义accessibilityIdentifier,然后在uiautomation测试中使用它来获取元素。

e.g:

// suppose label has traits of a button
label.accessibilityIdentifier = "<some constant>:\(indexPath.row)"

// test class
let label = table.buttons["<some constant>:\(<row index>)"] //this will give u only one element
label.tap()