gpt4 book ai didi

xcode - XCUIElement 存在,但不可命中

转载 作者:行者123 更新时间:2023-12-02 07:53:40 26 4
gpt4 key购买 nike

在我的 UI 测试中,我使用(缩短)以编程方式创建 UIView

let topMarker = UIView.init(frame: CGRect.init())

topMarker.accessibilityIdentifier = kTopMarker

topMarker View 位于自定义表格 View 单元格中。在我的 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 存在,但不可命中。
另一方面,我可以在快照中看到 View ,即它存在并且可见。
这很奇怪,因为 docs说:

如果元素存在并且可以在其当前位置单击、点击或按下,isHittable 返回 true。如果该元素不存在、位于屏幕外或被另一个元素覆盖,则返回 false。

我想,也许它是可见的,但无法单击、点击或按下,因为 userInteractionEnable 不是 true,但即使我将此属性设置为 true, View 不会变为可命中。

我错过了什么?

最佳答案

问题已解决:
XCUIElement 仅当其 isAccessibilityElement 属性设置为 true 时才可命中。
docs对属性 isAccessibilityElement

此属性的默认值为 false,除非接收者是标准 UIKit 控件,在这种情况下该值为 true。
辅助应用程序只能获取有关由辅助功能元素表示的对象的信息。因此,如果您实现的自定义控件或 View 应可供残障用户访问,请将此属性设置为 true。

我以编程方式实例化的 UIView 不是标准 UIKit 控件。一旦我添加

topMarker.isAccessibilityElement = true  

测试

XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")  

成功。

关于xcode - XCUIElement 存在,但不可命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com