使用Xcode 8和swift 3.2开发的ios-app的UI测试。
在升级Xcode版本8到9
后,我遇到了处理拖放问题我想拖动一个元素[i.e. button]
并将其放到另一个元素[i.e. on homepage]
。
对于Xcode 8,我使用以下方法实现它:
let sourceElement = app.buttons["Video_Button"]
let destElement = app.scrollViews.scrollViews.images.element(boundBy: 0)
sourceElement.press(forDuration: 0.5, thenDragTo: destElement)
但上面的代码在Xcode 9和Swift 3.2中不起作用。
答案 0 :(得分:2)
实际问题是在iOS 11.0中。
在iOS 11.0中,某些分层元素未能点按或按或 longpress 。
您必须使用元素中心点来执行点按或按或 longpress 。
该问题的解决方案的** 代码段粘贴在下方。
首先创建一个扩展方法,用于按下元素的中心并将此元素拖动到目标元素中心。
扩展方法在
之下extension XCUIElement {
func dragAndDropUsingCenterPos(forDuration duration: TimeInterval,
thenDragTo destElement: XCUIElement) {
let sourceCoordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5))
let destCorodinate: XCUICoordinate = destElement.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5))
sourceCoordinate.press(forDuration: duration, thenDragTo: destCorodinate)
}
}
然后调用下面的扩展方法
sourceElement.dragAndDropUsingCenterPos(forDuration: 0.5, thenDragTo: destElement)
希望它能解决您的问题。让我知道您的反馈意见。