Xcode 9:如何使用XCUIElementQuery创建XCUIElement实例?

Xcode 9: How to create XCUIElement instances using XCUIElementQuery?

看完 2017 WWDC Xcode 和 XCTest 视频后,我更新了我的测试以使用 XCTests 中的最新添加。

我最近升级到 Xcode 9 Beta,正在运行 OS X Sierra 10.12.4

在此之后,我使用 XCUIElement() 创建元素实例的所有测试都失败了。

示例代码行: XCTAssertTrue(XCUIElement().scrollToElement(tablesQuery.cells.staticTexts["Featured"]).exists)

这是我得到的错误: 'init()' 不可用:使用 XCUIElementQuery 创建 XCUIElement 实例。

如果您想知道 scrollToElement() 是什么,它是一个自定义函数,用于滚动到正在查询的元素(如果它在当前视图中不可见)。 它是我编写的 XCUIElement 自定义扩展的一部分。

作为解决方案的一部分,您能否建议: 现在应该如何创建 XCUIElement 实例?

供参考: scrollToElement()

open func scrollToElement(_ element: XCUIElement) -> XCUIElement {
    while !element.visible() {
        swipeUp()
    }
    return element
}

open func visible() -> Bool {
    guard self.exists && !self.frame.isEmpty else { return false }
    return XCUIApplication().windows.element(boundBy: 0).frame.contains(self.frame)
}

感谢任何帮助!

您不能直接初始化 XCUIElements - 您必须通过 XCUIElement 的子类 XCUIApplication 访问它们。如果您从 XCUIApplication 调用滚动方法,它将起作用。

let app = XCUIApplication()
XCTAssertTrue(app.scrollToElement(app.tables.cells.staticTexts["Featured"]).exists)