Xcode XCUITest XCUICoordinate无法与按和/或拖动一起使用

时间:2018-07-05 12:59:17

标签: xcode automation coordinates ui-automation xcuitest

我正在运行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中的已知错误,还是我创建坐标不正确?

1 个答案:

答案 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)