在Xcode 8/Swift 3中,使用座標(withNormalizedOffset:CGVector)函數與XCUIElement交互似乎只能在縱向模式下工作。無法在橫向模式下點擊(x,y)座標
爲了測試此功能,我創建了一個屏幕項目,並在視圖中居中放置了一個按鈕。然後我運行以下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 /斯威夫特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 :)有什麼關係?
在這一點上,我相信這是一個框架的bug。向蘋果提交了一份報告。 – tedrothrock