【发布时间】:2017-06-15 22:53:12
【问题描述】:
观看 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)
}
感谢任何帮助!
【问题讨论】:
-
为什么需要尝试创建
XCUIElement的实例呢?我认为您应该将scrollToElement改为静态方法。 -
@AdamPro13 好主意,但在
scrollToElement内部我使用的是 XCUIElement 中的swipeUp()方法,因此不能将其设为静态。 -
您不能只实例化
XCUIElement的实例,因为它们映射到 UI 中的现有元素。如果您创建的元素没有与 UI 关联,您将无法对它执行任何操作,因为它什么都不知道。 -
谢谢亚当!我找到了一个解决方案,改用
XCUIApplication。
标签: ios xctest xcode-ui-testing xcode9-beta xcode9