在 Xcode UITesting 中进行精确的像素拖动

Doing an exact pixel drag in Xcode UITesting

我知道拖动元素的默认方式:

let start = savingsCell.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let finish = savingsCell.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: -80))
start.press(forDuration: 0, thenDragTo: finish)

这里的问题是,在我指定的 80 点之外 UITableView 继续拖动。有没有办法在没有物理学的情况下精确地拖动这个数量?

您可以使用 XCUICoordinate 上的 coordinate(withOffset:) 方法从起始坐标创建结束坐标,从而使拖动成为精确的点数。

let start = savingsCell.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let finish = start.withOffset(CGVector(dx: 0, dy: -80))
start.press(forDuration: 0, thenDragTo: finish)

归一化方法的向量是相对于元素大小的,但是coordinate(withOffset:)的向量使用绝对点值。 (不是像素 - 所以在使用 @2x 或 @3x 资产的设备上,这实际上分别是 160 像素或 240 像素)