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)
看完 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)