如何访问XCUITest中导航栏上的右侧项目按钮?

时间:2019-01-09 19:28:23

标签: ios xcode-ui-testing xcuitest

我正在为我的iOS Swift应用程序编写UITest案例。在应用程序中,我通过以下方式在导航栏上创建了一个自定义的右键项目按钮:

let barButtonItem = UIBarButtonItem(customView: customView)
navigationItem.rightBarButtonItem = barButtonItem

现在,我不知道如何在XCUITest中访问此自定义的右键项目按钮,确实需要一些帮助。预先感谢。

2 个答案:

答案 0 :(得分:2)

您无法访问UIBarButtonItem,因为它不是真正的UIElement(它不是UIView子类),但是您可能想访问右侧栏中按钮中的UIButton无论如何。

有几种方法可以访问该按钮,这有两个想法:

1。查询导航栏中的第一个按钮

let rightNavBarButton = XCUIApplication().navigationBars.children(matching: .button).firstMatch
XCTAssert(rightNavBarButton.exists)

通过这种方式,您可以访问UIButton中的第一个UINavigationBar

这仅在导航栏中只有一个按钮时有效。因此,当您添加另一个按钮时,它将中断。

2。使用可访问性标识符

您可以为右栏按钮项中的按钮定义一个可访问性标识符,并在测试期间使用该标识符来访问它:

在您的应用中:

let barButtonItem = UIBarButtonItem(customView: customView)
barButtonItem.accessibilityIdentifier = "navbarRightItem"
navigationItem.rightBarButtonItem = barButtonItem

在测试中:

let rightNavBarButton = XCUIApplication().navigationBars.buttons["navbarRightItem"]
XCTAssert(rightNavBarButton.exists)

只需确保您使用的是accessibilityIdentifier,而不是accessibilityLabel。因为accessibilityLabel将由VoiceOver为残障用户阅读,并且应包含有用的文本。

答案 1 :(得分:0)

您必须为按钮分配using (IDbConnection conn = factory.CreateConnection()) { conn.ConnectionString = ConnectionString; conn.Open(); IDbCommand cmd = conn.CreateCommand(); cmd.CommandText = $"SELECT * from TABLENAME"; var reader = cmd.ExecuteReader(); while (reader.Read()) { //--do some operation } conn.Close(); }

accessibilityIdentifier

如果不起作用,请将barButtonItem.accessibilityIdentifier = “barButtonItemID” 设置为YES / true