如何在Xcode UI测试脚本中执行点击和拖动操作?

Jam*_*Goe 5 testing xcode7 xcode-ui-testing

例如,我有一个草图垫应用程序,我想通过绘制它来测试.我想指定一个(x,y)坐标,然后点击并拖动到另一个(x,y)坐标.

这在Xcode UI测试中是否可行?

Joe为这个问题提供了一个解决方案:使用目标C,我的代码看起来像这样:

XCUICoordinate *start = [element2 coordinateWithNormalizedOffset:CGVectorMake(0, 0)];
XCUICoordinate *finish = [element2 coordinateWithNormalizedOffset:CGVectorMake(0.5, 0.5)];
[start pressForDuration:0 thenDragToCoordinate:finish];
Run Code Online (Sandbox Code Playgroud)

这里element2是XCUIElement我不得不执行的阻力.

Joe*_*tti 27

您可以使用XCUICoordinate在UI测试中点击和拖动元素.以下是如何通过表格单元格坐标进行刷新的示例.

let firstCell = app.staticTexts["Adrienne"]
let start = firstCell.coordinateWithNormalizedOffset(CGVectorMake(0, 0))
let finish = firstCell.coordinateWithNormalizedOffset(CGVectorMake(0, 6))
start.pressForDuration(0, thenDragToCoordinate: finish)
Run Code Online (Sandbox Code Playgroud)

如果您没有要引用的元素,则应该能够基于创建任意坐标XCUIApplication.

let app = XCUIApplication()
let fromCoordinate = app.coordinateWithNormalizedOffset(CGVector(dx: 0, dy: 10))
let toCoordinate = app.coordinateWithNormalizedOffset(CGVector(dx: 0, dy: 20))
fromCoordinate.pressForDuration(0, thenDragToCoordinate: toCoordinate)
Run Code Online (Sandbox Code Playgroud)

UI测试没有官方文档,但如果您对更多细节感兴趣,我已经删除了标题并整理了一个XCTest Reference.


Ber*_*lor 6

或者从 Swift 4 开始:

let view = window.staticTexts["FooBar"]
let start = view.coordinate(withNormalizedOffset: CGVector(dx: 10, dy: 20))
let finish = view.coordinate(withNormalizedOffset: CGVector(dx: 100, dy: 80))
start.press(forDuration: 0.01, thenDragTo: finish)
Run Code Online (Sandbox Code Playgroud)