1

在观看了 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)
}

任何帮助表示赞赏!

4

1 回答 1

0

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

let app = XCUIApplication()
XCTAssertTrue(app.scrollToElement(app.tables.cells.staticTexts["Featured"]).exists)
于 2017-06-16T18:20:18.787 回答