UITests:如何通过带有谓词的accessibilityIdentifier 找到UIBarButtonItem?
Posted
技术标签:
【中文标题】UITests:如何通过带有谓词的accessibilityIdentifier 找到UIBarButtonItem?【英文标题】:UITests: How to find UIBarButtonItem by accessibilityIdentifier with predicate? 【发布时间】:2015-08-28 09:37:47 【问题描述】:这是我在代码中设置它的方式:
let userBarButtonItem = UIBarButtonItem(image: userIcon,
style: .Plain,
target: self,
action: Selector("userButtonTapped:"))
userBarButtonItem.accessibilityIdentifier = "userBarButtonItem"
然后在UITestCase
中我需要使用:
XCUIApplication().otherElements["userBarButtonItem"] //doesnt work, and the reason is:
断言失败:UI 测试失败 - 未找到“userBarButtonItem”其他匹配项
有没有办法例如使用谓词来找到它?
【问题讨论】:
你得到答案了吗? 很遗憾没有,还在寻找答案... 【参考方案1】:UIBarButtonItem
没有实现UIAccessibilityIdentification
,所以设置accessibilityIdentifier
不起作用。
不如试试
userBarButtonItem.accessibilityLabel = "userBarButtonItem"
然后在测试用例中
XCUIApplication().buttons["userBarButtonItem"]
这应该可行。
更新:
现在 UIBarButtonItem 确实符合 UIAccessibilityIdentification,所以所有这些都不需要。
【讨论】:
现在 UIBarButtonItem 确实符合 UIAccessibilityIdentification。 developer.apple.com/reference/uikit/… UIBarButtonItem 确实实现了 UIAccessibilityIdentification,因此您可以从用户定义的运行时属性中添加accessibilityIdentifier。 好吧,developer.apple.com/documentation/uikit/uibarbuttonitem 肯定说如果符合,但在代码中它实际上不符合:( 其实你是对的,accessibilityIdentifier 还是不行,谢谢:)【参考方案2】:这对我有用:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:UIString(@"Sign In") style:UIBarButtonItemStyleDone target:self action:@selector(submitPressed:)];
self.navigationItem.rightBarButtonItem.accessibilityLabel = @"registration-submit-button";
然后我通过
找到了app.navigationBars.buttons["registration-submit-button"]
【讨论】:
以上是关于UITests:如何通过带有谓词的accessibilityIdentifier 找到UIBarButtonItem?的主要内容,如果未能解决你的问题,请参考以下文章