在我的UI测试中,我使用(缩短的)
以编程方式创建UIView
let topMarker = UIView.init(frame: CGRect.init())
…
topMarker.accessibilityIdentifier = kTopMarker
topMarker
视图位于自定义表格视图单元格中。
在我的UI测试中,我使用
let new1stCell = app.cells.element(boundBy: 0)
let topMarker = new1stCell.otherElements[kTopMarker]
let topMarkerExists = topMarker.waitForExistence(timeout: 15)
XCTAssertTrue(topMarkerExists, "Top marker does not exist")
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")
当我设置测试失败断点时,测试在最后一行停止,即topMarker
存在,但不可命中。
另一方面,我可以在快照中看到视图,即它存在且可见
这是stange,因为docs说:
isHittable将返回true,并且可以在其当前位置单击,点击或按下该元素。如果元素不存在,屏幕外或其他元素覆盖,则返回false。
我想,也许它是可见的,但无法点击,点击或按下,因为userInteractionEnable
不是true
,但即使我将此属性设置为true
,视图不会成为可击中的。
我错过了什么?
答案 0 :(得分:4)
问题解决了:
如果XCUIElement的isAccessibilityElement
属性设置为true,则只能触及。
docs到属性isAccessibilityElement
说
除非接收方是标准的UIKit控件,否则此属性的默认值为false。在这种情况下,该值为true。
辅助应用程序只能获取有关由辅助功能元素表示的对象的信息。因此,如果您实现了残障用户可以访问的自定义控件或视图,请将此属性设置为true。
我以编程方式实例化的UIView
是不标准的UIKit控件。我一添加
topMarker.isAccessibilityElement = true
测试
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")
成功。