XCode 7 UI 测试 - 可用的操作
Posted
技术标签:
【中文标题】XCode 7 UI 测试 - 可用的操作【英文标题】:XCode 7 UI Testing - Actions Available 【发布时间】:2015-10-06 20:35:10 【问题描述】:Apple 在 ios 9 上介绍 Xcode 7 的 UI 测试时谈到的一件事是,一切都来自可访问性。我想知道是否有人知道如何找出一个元素上是否有“可用操作”。
我有一个UITableView
,其中一些单元格可以通过从右向左滑动显示删除按钮来删除。当 VoiceOver 打开并点击单元格时,它会将单元格描述为一个按钮,然后显示“可用的操作”。
我想从我的测试中找出这一点,这样我就可以用来验证某些东西是启用的,而有些东西不是。
有什么想法吗?
【问题讨论】:
【参考方案1】:Swift 3 中的语法发生了变化。
let app = XCUIApplication()
let cells = app.tables.cells
cells.element(boundBy: 0).swipeLeft()
cells.element(boundBy: 0).buttons["Delete"].tap()
【讨论】:
【参考方案2】:我不知道有什么方法可以从 XCUITesting 中找出是否有任何可访问性操作可用,如果有,它们是什么。
但是,如果您特别想检测在单元格上从右向左滑动后“删除”按钮是否可用,您可以使用类似
yourCellXCUIElement.buttons.count //How many buttons are visible inside your cell. In a standard UITableViewCell, this will be 0 unless you have exposed the "Delete" button.
你也可以像这样获取按钮上的标签:
yourCellXCUIElement.buttons.elementAtIndex(0).label //In a standard UITableViewCell that has been swiped left to expose the Delete button, this will return "Delete"
这是您想要达到的目的,还是您尝试验证是否启用了不同的东西?
【讨论】:
当我在单元格上执行swipeLeft
时,如果该操作不存在,它最终会对其进行录音,从而将我转换到不同的视图。我希望我可以检查是否存在删除选项而无需实际转换。不过,我将不得不尝试您的方法,但我认为没有办法绕过不滑动以显示按钮。
在我的 UI 测试中,我显示了我的第一个 tableView 单元格的删除按钮,如下所示:app.tables.cells.elementBoundByIndex(0).swipeLeft()
然后我设法像这样点击删除按钮:app.tables.cells.elementBoundByIndex(0).buttons["Delete"].tap()
以上是关于XCode 7 UI 测试 - 可用的操作的主要内容,如果未能解决你的问题,请参考以下文章
XCode 7 beta 6 UI 测试 - 无法选择列表中的元素
Xcode 7 UI 测试 XCUIElementQuery 随机未正确更新
Xcode 7 之前的项目的 Xcode 7 UI 测试用例