首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCUIElement存在,但不可命中。

XCUIElement存在,但不可命中。
EN

Stack Overflow用户
提问于 2018-02-17 20:14:49
回答 1查看 6.6K关注 0票数 8

在UI测试中,我以编程方式使用(缩写)创建了一个UIView

代码语言:javascript
复制
let topMarker = UIView.init(frame: CGRect.init())
…
topMarker.accessibilityIdentifier = kTopMarker  

topMarker视图位于自定义表视图单元格中。在UI测试中,我使用

代码语言:javascript
复制
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存在,但不可命中。

另一方面,我可以在快照中看到视图,即它存在并且是可见的。

这是斯坦,因为文档说:

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

我想,也许它是可见的,但是不能被点击、点击或按下,因为userInteractionEnable不是true,但是即使我将这个属性设置为true,视图也不会被击中。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-18 07:12:00

解决问题:

如果将isAccessibilityElement 属性设置为true.,则XCUIElement仅可命中。

文档 to property isAccessibilityElement say

除非接收方是标准的UIKit控件,否则此属性的默认值为false,在这种情况下,该值为true。

辅助应用程序只能获得由可访问性元素表示的对象的信息。因此,如果您实现了残障用户应该可以访问的自定义控件或视图,请将此属性设置为true。

我以编程方式实例化的UIView是而不是,它是一个标准的UIKit控件。一旦我加入

代码语言:javascript
复制
topMarker.isAccessibilityElement = true  

测试

代码语言:javascript
复制
XCTAssertTrue(topMarker.isHittable, "Top marker is not hittable")  

成功了。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48845519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档