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 UI 测试目标语言环境和区域设置

XCode 7 beta 6 UI 测试 - 无法选择列表中的元素

Xcode 7 UI 测试 XCUIElementQuery 随机未正确更新

Xcode 7 之前的项目的 Xcode 7 UI 测试用例

Xcode 7 UI 测试与 Xcode Bot 的集成程度如何?它是不是显示 UI 测试步骤?

设置 UI 测试 Xcode 7 后单元测试永远不会运行