如何在XCTest上画线

时间:2016-09-23 17:25:38

标签: line draw ui-automation xctest

目前,我将测试解决方案从UI Automation更改为XCTest。我的应用程序可以允许用户在区域内绘制线条。

因此,在我之前的UI自动化测试中,我可以使用

的方法绘制
dragFromToForDuration(startPoint, endPoint, duration), 

但是在XCTest中我找到了一个,但对我来说不可行:

func press(forDuration duration: TimeInterval, thenDragTo otherElement:XCUIElement)

我使用这样的方法:

let app = XCUIApplication()
let cell = app.toolbars.buttons["line"]
let start = cell.coordinate(withNormalizedOffset: CGVector.init(dx:0 , dy: 200)
let finish = = cell.coordinate(withNormalizedOffset: CGVector.init(dx:400 , dy: 300)
start.press(forDuration: 2, thenDragTo: finish)

我上面的代码有问题吗?显然这种方法可以绘制直线,曲线怎么样?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

首先设置您的测试视图的可访问性标识符,然后在您的测试代码中:

    let view = app.otherElements["test_view"] // "test_view" is test view's accessibility identifier
    let origin = view.coordinate(withNormalizedOffset: .zero)
    let point1 = origin.withOffset(CGVector(dx: 80, dy: 80))
    let point2 = origin.withOffset(CGVector(dx: 200, dy: 200))

    point1.press(forDuration: 2, thenDragTo: point2)

这将绘制一条从 (80, 80) 到 (200, 200) 的线。