Xcode 9:如何使用XCUIElementQuery创建XCUIElement实例?
在观看2017年WWDC Xcode和XCTest视频之后,我更新了测试以使用XCTests中的最新附加内容。Xcode 9:如何使用XCUIElementQuery创建XCUIElement实例?
我最近升级到Xcode的9 Beta版,捉迷藏OS X塞拉利昂10.12.4
在此之后,我曾经XCUIElement()来创建一个元素实例的所有测试,失败了。
实施例的代码行: XCTAssertTrue(XCUIElement()scrollToElement(tablesQuery.cells.staticTexts [ “精选”])的存在。)
这是我的错误: '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 - 您必须通过XCUIApplication(它是XCUIElement的子类)来访问它们。如果您从XCUIApplication调用滚动方法,它将起作用。
let app = XCUIApplication()
XCTAssertTrue(app.scrollToElement(app.tables.cells.staticTexts["Featured"]).exists)
这就像一个魅力,你是我的救世主。我不知何故错过了'XCUIApplication'是'XCUIElement'的一个子类。非常感谢! – nChetan
为什么你需要尝试创建'XCUIElement'的实例呢?我认为你应该使'scrollToElement'成为一种静态方法。 – AdamPro13
@ AdamPro13好主意,但在'scrollToElement'里面我使用了XCUIElement中的'swipeUp()'方法,因此它不能变为静态的。 – nChetan
您不能仅实例化一个'XCUIElement'实例,因为它们映射到UI中的现有元素。如果你创建了一个没有与UI关联的元素,你将无法对它做任何事情,因为它什么都不知道。 – AdamPro13