UITests:如何通过带谓词的accessibilityIdentifier查找UIBarButtonItem?

时间:2015-08-28 09:37:47

标签: ios swift xcode xcode-ui-testing

这是我在代码中设置的方式:

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”匹配的其他

有没有办法如何使用谓词找到它?

2 个答案:

答案 0 :(得分:2)

UIBarButtonItem未实施UIAccessibilityIdentification,因此设置accessibilityIdentifier不起作用。

而是尝试

userBarButtonItem.accessibilityLabel = "userBarButtonItem"

然后在测试用例中

XCUIApplication().buttons["userBarButtonItem"]

这应该有用。

更新:

现在UIBarButtonItem确实符合UIAccessibilityIdentification,因此不需要所有这些。

答案 1 :(得分: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"]