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

时间:2017-06-15 22:53:12

标签: ios xctest xcode-ui-testing xcode9-beta xcode9

在观看2017年WWDC Xcode和XCTest视频后,我更新了我的测试,以便在XCTests中使用最新添加的内容。

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

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

示例代码行 XCTAssertTrue(XCUIElement()scrollToElement(tablesQuery.cells.staticTexts ["精选&#34]。。)存在)

这是我得到的错误: '的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)
}

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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

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