我正在运行Xcode 9.4.1,并尝试使用XCUICoordinates进行长按和长按拖动功能。我两种方法都可以在XCUIElements上正常工作,但是在针对XCUICoordinates运行时都无法使用。
例如,使用以下代码
let app = XCUIApplication()
let pointOfInterest = app.buttons["PointOfInterest1"]
let coordinates: XCUICoordinate = app.coordinate(withNormalizedOffset: CGVector(dx: pointOfInterest.frame.origin.x, dy: pointOfInterest.frame.origin.y))
// This does nothing:
coordinates.press(forDuration: 3)
// This selects the points of interest:
pointOfInterest.press(forDuration: 3)
针对兴趣点XCUIElement调用press()方法时,一切正常,并且已将其选中。当对相同兴趣点的XCUICoordinate调用press()方法时,什么也没有发生。无法选择它。
按和拖动方法也会发生相同的不一致。
这是Xcode的XCUITest中的已知错误,还是我创建坐标不正确?
答案 0 :(得分:0)
结果是,您需要首先将0、0点设置为变量(“归一化”),然后调用相对于该点的坐标。因此,工作代码如下所示:
let app = XCUIApplication()
let pointOfInterest = app.buttons["PointOfInterest1"]
let normalized = app.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let coordinates: XCUICoordinate = normalized.coordinate(withNormalizedOffset: CGVector(dx: pointOfInterest.frame.origin.x, dy: pointOfInterest.frame.origin.y))
// This now works:
coordinates.press(forDuration: 3)
// This selects the points of interest:
pointOfInterest.press(forDuration: 3)