iOS UITest:如何测试自定义辅助功能操作



我想支持VoiceOver。我在UITableViewCell里面有一个UIButton。根据最佳实践,我禁用了可访问性按钮(.isAccessibilityElement = false(,并为单元格实现了自定义可访问性操作(accessibilityCustomActions, NSAccessibilityCustomAction(。

这样,VoiceOver就不会将按钮作为自己的元素来查找和读取。为了使按钮后面的功能可以访问,我在单元格中添加了一个自定义的可访问性操作。使用自定义动作,用户可以选择上下滑动的动作。然后双击执行。

现在我想用UITest测试这个动作。不可能访问UITest内部的按钮,因为它已被禁用,无法访问。

如何在UITest中执行自定义可访问性操作?

如何在UITest中执行自定义可访问性操作?

实际上,使用{Xcode 11,iOS 13}您无法,即使您可以在UITest中获得一系列操作,它也是零,并且您不能从XCUITEST中激发选择器(UI测试不像单元测试那样获得对应用程序的代码级访问权限(

手动测试是目前使用VoiceOver测试可访问性自定义操作的唯一方法。

看看苹果工程师在2019年WWDC期间给出的答案。

不知道我是否答对了你的问题,或者这是否可行,但你可以尝试坐标(带NormalizedOffset:(功能来点击UIButton

例如。

let buttonRectMidX = 300.0
let cellWidth = 320.0
let buttonRectMidY = 25.0
let cellHeight = 50.0

app.tables.firstMatch
.cells.element(boundBy: 2)
.coordinate(withNormalizedOffset: CGVector(dx: buttonRectMidX / cellWidth, dy: buttonRectMidY / cellHeight))
.tap()

最新更新