XCUIElement 存在,但不可命中
XCUIElement exists, but is not hittable
在我的 UI 测试中,我使用(缩短的)
以编程方式创建了一个 UIView
let topMarker = UIView.init(frame: CGRect.init())
…
topMarker.accessibilityIdentifier = kTopMarker
topMarker
视图位于自定义 table 视图单元格中。
在我的 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
存在,但未命中 table.
另一方面,我可以在快照中看到视图,即它存在并且可见。
这很奇怪,因为 docs 说:
isHittable returns 如果元素存在并且可以在其当前位置单击、点击或按下,则为真。如果该元素不存在、在屏幕外或被另一个元素覆盖,则 returns 为 false。
我想,也许它是可见的,但不能点击、轻敲或按下,因为userInteractionEnable
不是true
,但即使我把这个属性设置为true
,视图不会变成命中table。
我错过了什么?
问题已解决:
XCUIElement 仅当其 isAccessibilityElement
属性 设置为真时才可命中。
docs 到 属性 isAccessibilityElement
说
此 属性 的默认值为 false,除非接收器是标准 UIKit 控件,在这种情况下值为 true。
辅助应用程序只能获取有关由可访问性元素表示的对象的信息。因此,如果您实现了应该可供残障用户访问的自定义控件或视图,请将此 属性 设置为 true。
我以编程方式实例化的 UIView
不是 标准 UIKit 控件。我一添加
topMarker.isAccessibilityElement = true
测试
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")
成功。
在我的 UI 测试中,我使用(缩短的)
以编程方式创建了一个UIView
let topMarker = UIView.init(frame: CGRect.init())
…
topMarker.accessibilityIdentifier = kTopMarker
topMarker
视图位于自定义 table 视图单元格中。
在我的 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
存在,但未命中 table.
另一方面,我可以在快照中看到视图,即它存在并且可见。
这很奇怪,因为 docs 说:
isHittable returns 如果元素存在并且可以在其当前位置单击、点击或按下,则为真。如果该元素不存在、在屏幕外或被另一个元素覆盖,则 returns 为 false。
我想,也许它是可见的,但不能点击、轻敲或按下,因为userInteractionEnable
不是true
,但即使我把这个属性设置为true
,视图不会变成命中table。
我错过了什么?
问题已解决:
XCUIElement 仅当其 isAccessibilityElement
属性 设置为真时才可命中。
docs 到 属性 isAccessibilityElement
说
此 属性 的默认值为 false,除非接收器是标准 UIKit 控件,在这种情况下值为 true。
辅助应用程序只能获取有关由可访问性元素表示的对象的信息。因此,如果您实现了应该可供残障用户访问的自定义控件或视图,请将此 属性 设置为 true。
我以编程方式实例化的 UIView
不是 标准 UIKit 控件。我一添加
topMarker.isAccessibilityElement = true
测试
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")
成功。