Xcode UI 测试 - 拖放
Xcode UI Testing - Drag and Drop
我正在尝试创建 XCTestCase 以测试大纲视图中的重新排序(在 OS X 应用程序中)。当我使用 UI 测试记录功能时,Xcode 打印出:
window.outlines.staticTexts["<cell which I want to move>"].click()
我尝试在大纲视图内部或外部拖动单元格,Xcode 生成相同的无用代码。
有人知道如何在 Xcode 7 中正确测试拖放吗?
我唯一可以建议的是尝试检查被测试代码的辅助功能。 UI 测试需要有可访问性信息才能了解 UI 中发生的事情。有关如何解决 UI 录制无法正确生成代码的问题的示例,请参见视频中 39:30 处的 Apple WWDC15 UI Testing video。
同样的问题。没有解决方案。看起来可访问性不支持 d-n-d,Apple 文档说:Provide alternatives for drag-and-drop operations.
不确定这是否是新的,但是在 Xcode 7.2 中,如果您查看 XCUIElement
的 header,[=21] 有一个 clickForDuration(thenDragToElement:)
函数=] X. 似乎对我有用 NSOutlineView
.
这是来自 header...
/*!
* Clicks and holds for a specified duration (generally long enough to start a drag operation) then drags
* to the other element.
*/
public func clickForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement)
与Xcode 9.4.1
Swift:
func press(forDuration duration: TimeInterval, thenDragTo otherElement: XCUIElement)
示例:
let ele: XCUIElement = XCUIApplication()!.otherElements.matching(identifier: "element_identifier").element(boundBy: 0)
ele.press(forDuration: <timeIntervalInSec>, thenDragTo: <destination_XCUIElement>)
参考:API Doc
我正在尝试创建 XCTestCase 以测试大纲视图中的重新排序(在 OS X 应用程序中)。当我使用 UI 测试记录功能时,Xcode 打印出:
window.outlines.staticTexts["<cell which I want to move>"].click()
我尝试在大纲视图内部或外部拖动单元格,Xcode 生成相同的无用代码。
有人知道如何在 Xcode 7 中正确测试拖放吗?
我唯一可以建议的是尝试检查被测试代码的辅助功能。 UI 测试需要有可访问性信息才能了解 UI 中发生的事情。有关如何解决 UI 录制无法正确生成代码的问题的示例,请参见视频中 39:30 处的 Apple WWDC15 UI Testing video。
同样的问题。没有解决方案。看起来可访问性不支持 d-n-d,Apple 文档说:Provide alternatives for drag-and-drop operations.
不确定这是否是新的,但是在 Xcode 7.2 中,如果您查看 XCUIElement
的 header,[=21] 有一个 clickForDuration(thenDragToElement:)
函数=] X. 似乎对我有用 NSOutlineView
.
这是来自 header...
/*!
* Clicks and holds for a specified duration (generally long enough to start a drag operation) then drags
* to the other element.
*/
public func clickForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement)
与Xcode 9.4.1 Swift:
func press(forDuration duration: TimeInterval, thenDragTo otherElement: XCUIElement)
示例:
let ele: XCUIElement = XCUIApplication()!.otherElements.matching(identifier: "element_identifier").element(boundBy: 0)
ele.press(forDuration: <timeIntervalInSec>, thenDragTo: <destination_XCUIElement>)
参考:API Doc