【发布时间】:2016-11-12 00:52:54
【问题描述】:
在 Xcode 8 / Swift 3 中,使用坐标(withNormalizedOffset: CGVector) 函数与 XCUIElement 交互似乎只能在纵向模式下工作。
为了测试这个功能,我创建了一个单屏项目,其中一个按钮位于视图的中心。然后我运行了以下 UI 测试:
func testExample() {
XCUIDevice.shared().orientation = .portrait
let window = XCUIApplication().windows.element(boundBy: 0)
let centerPoint = window.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
centerPoint.tap()
}
这成功地点击了按钮。但是,如果我在 LandscapeLeft 或 LandscapeRight 中运行相同的测试,则不会点击该按钮。打印坐标的屏幕点表明它在纵向和横向模式下都位于按钮的框架内。
Xcode 7 / Swift 2 中所有方向的相同逻辑都是成功的:
func testExample() {
XCUIDevice.sharedDevice().orientation = .LandscapeLeft
let window = XCUIApplication().windows.elementBoundByIndex(0)
let centerPoint = window.coordinateWithNormalizedOffset(CGVectorMake(0.5, 0.5))
centerPoint.tap()
}
我是否遗漏了什么,或者这是一个合法的框架错误?它与从 Swift 2 中的 CGVectorMake 到 Swift 3 中的 CGVector(dx: dy:) 的过渡有关吗?
【问题讨论】:
-
在这一点上,我确信这是一个框架错误。向 Apple 提交报告。
标签: swift3 xcode8 ios-ui-automation xcode-ui-testing