目前,我将测试解决方案从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)
我上面的代码有问题吗?显然这种方法可以绘制直线,曲线怎么样?
提前致谢!!
答案 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) 的线。