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

时间:2017-11-10 09:33:05

标签: xcode xcode-ui-testing ui-testing

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

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。有没有办法在没有物理的情况下拖动这个数量?

1 个答案:

答案 0 :(得分:1)

您可以使用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像素)