我想支持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()