3 回答
我联系了 Apple,他们发现了我的错误:
我的主视图控制器的视图的accessibility
属性设置为true
. 这是错误的;它必须设置为false
:
在文档中可以找到解释isAccessibilityElement
:
此属性的默认值为 false,除非接收者是标准 UIKit 控件,在这种情况下该值为 true。
辅助应用程序只能获取有关由可访问性元素表示的对象的信息。因此,如果您实现残障用户应该可以访问的自定义控件或视图,请将此属性设置为 true。这种做法的唯一例外是视图仅用作应可访问的其他项目的容器。这样的视图应该实现 UIAccessibilityContainer 协议并将此属性设置为 false。
一旦我将主视图的可访问性设置为 false,UI 测试就成功了。
除了上述答案...我想补充一点这可能是因为您正在访问的 XCUIElement 在屏幕上不可用。假设您正在为登录屏幕执行测试用例,并且模拟器正在使用仪表板而不是登录屏幕启动。这发生在我的案例中。我试图注销然后执行测试用例。错误消失
问题不是frame
在元素上找不到属性,而是找不到元素本身。
每一个XCUIElement
都来自一个XCUIElementQuery
. 如您所料,第一次尝试解析查询不是在分配 的值时addShoppingItemTextField
,而是在您第一次访问 上的属性(除了exists
)时addShoppingItemTextField
。
因此,当您尝试访问对象frame
上的属性时XCUIElement
,查找该元素的查询已解析,但未找到该元素 - 因此您在访问的行上收到错误消息“未找到匹配项...” frame
。这可能有点误导,但您遇到的问题是找不到该元素。尝试调整您的查询。