XCTest UI 测试 - 拖放
Posted
技术标签:
【中文标题】XCTest UI 测试 - 拖放【英文标题】:XCTest UI Testing - Drag and drop 【发布时间】:2016-11-23 12:51:10 【问题描述】:我正在尝试将图像拖动到我的应用程序中的特定布局,我可以点击图像但无法跨拖放区移动。并尝试了以下解决方案:
1
let startCoord = XCUIApplication().cells.element(boundBy: 0).coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.01));
let endCoord = startCoord.withOffset(CGVector(dx: 0.0, dy: -900));
startCoord.press(forDuration: 0.25, thenDragTo: endCoord)
2
let fromCoordinate = XCUIApplication().coordinate(withNormalizedOffset:CGVector(dx: 5, dy:10))
let toCoordinate = XCUIApplication().coordinate(withNormalizedOffset:CGVector(dx: 5, dy: 20))
fromCoordinate.press(forDuration: 5, thenDragTo: toCoordinate)
Locating through coordinates.
但我仍然无法找出解决方案。
有人知道如何在 Xcode 8.1 中正确执行拖放操作吗?
【问题讨论】:
你能打印出方法 1 和 2 的 from/to 坐标 x 和 y 值,然后发布吗? 【参考方案1】:先看功能说明:
public func pressForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement)
很明显,您必须使用 XCUIElement 作为“thenDragTo”参数。
您将 XCUICoordinate 作为无效参数传递。
尽量取图像的 XCUIElement,而不是取 XCUIElement 要拖动的地方,然后使用函数。下面给出一个简单的例子:
let firstImage = app.images.elementBoundByIndex(0)
let secondImage = app.images.elementBoundByIndex(1)
firstImage.pressForDuration(forDuration: 5, thenDragTo: secondImage)
//this will drag the first image to the second image location.
希望这对您有所帮助,并让我知道发生了什么。
【讨论】:
问题中用到的函数就是这个,取坐标:developer.apple.com/reference/xctest/xcuicoordinate/…以上是关于XCTest UI 测试 - 拖放的主要内容,如果未能解决你的问题,请参考以下文章
在 XCTest 的 UI 测试中从 TextView 获取文本