iOS UITests - 如何获取当前视图中存在的 XCUIElement 列表

Saz*_*han 1 testing xcode automated-tests ios xcode-ui-testing

我需要获取当前视图中存在的 XCUIElement 列表。例如,

let app = XCUIApplication()
let allElements = app.otherElements.allElementsBoundByIndex
Run Code Online (Sandbox Code Playgroud)

返回 xcuielements 的完整列表,但我只想获取可命中且存在于当前视图中的元素。

Ole*_*tha 6

如果您想要完整的元素列表,而不仅仅是otherElements不包括按钮、标签和其他常见视图类型的 ,您必须按元素类型过滤.Any

默认情况下,不存在的元素不会出现在列表中,但您可以使用循环过滤hittable以将列表限制为仅显示在屏幕上的项目。

let app = XCUIApplication()
let allElements = app.descendantsMatchingType(.Any)
var allHittableElements = [XCUIElement]()
for i in 0..<allElements.count {
    let element = allElements.elementBoundByIndex(i)
    if element.hittable {
        allHittableElements.append(element)
    }
}
Run Code Online (Sandbox Code Playgroud)

相当缓慢但简单的解决方案。

要获得更快的解决方案,您可以使XCUIElementQuery符合Collection并使用Collection.filter.