UI 测试标签栏控制器
UI testing a tab bar controller
我构建了一个带有 3 个选项卡的简单选项卡栏。
我想 运行 UI 测试以确保如果用户单击选项卡栏项目,将显示正确的视图控制器。我该怎么做呢?下面是我要开始的代码,只是不知道如何写我的断言。
func testTabBarMyProfileButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["My Profile"].tap()
}
func testTabBarGraphsButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["Graphs"].tap()
}
func testTabBarAboutButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["About"].tap()
}
您可以测试导航栏的标题。
XCTAssert(app.navigationBars["Graphs"].exists)
如果您在每个选项卡栏上显示的每个视图控制器中有不同的控件,您可以断言它们是否存在(这是预期的)。
例如,如果第一个标签栏有一个名为 "First name" 的 UILabel,您可以通过编写
来断言它是否存在
Let theLabel = app.staticTexts["myValue"]
XCTAssert(theLabel.exists).to(beTrue)
在其他屏幕上对不同的控件执行相同的操作。
如果有人发现这个正在寻找 UI 测试另一个应用程序的内容,我刚刚找到了解决方案..
标签栏项目是一个惰性变量,需要在您按值引用标签栏按钮之前对其进行修改。添加此行:
tabBarItem.accessibilityIdentifier = "my-snazzy-identifier"
添加到 viewDidLoad 方法,您应该能够在 UI 测试中执行此操作:
app.tabBars.buttons["Button Title"].tap()
您可以通过其位置访问标签栏按钮:
app.tabBars.buttons.element(boundBy: 2).tap()
我构建了一个带有 3 个选项卡的简单选项卡栏。
我想 运行 UI 测试以确保如果用户单击选项卡栏项目,将显示正确的视图控制器。我该怎么做呢?下面是我要开始的代码,只是不知道如何写我的断言。
func testTabBarMyProfileButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["My Profile"].tap()
}
func testTabBarGraphsButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["Graphs"].tap()
}
func testTabBarAboutButton() {
let tabBarsQuery = XCUIApplication().tabBars
tabBarsQuery.buttons["About"].tap()
}
您可以测试导航栏的标题。
XCTAssert(app.navigationBars["Graphs"].exists)
如果您在每个选项卡栏上显示的每个视图控制器中有不同的控件,您可以断言它们是否存在(这是预期的)。 例如,如果第一个标签栏有一个名为 "First name" 的 UILabel,您可以通过编写
来断言它是否存在Let theLabel = app.staticTexts["myValue"]
XCTAssert(theLabel.exists).to(beTrue)
在其他屏幕上对不同的控件执行相同的操作。
如果有人发现这个正在寻找 UI 测试另一个应用程序的内容,我刚刚找到了解决方案..
标签栏项目是一个惰性变量,需要在您按值引用标签栏按钮之前对其进行修改。添加此行:
tabBarItem.accessibilityIdentifier = "my-snazzy-identifier"
添加到 viewDidLoad 方法,您应该能够在 UI 测试中执行此操作:
app.tabBars.buttons["Button Title"].tap()
您可以通过其位置访问标签栏按钮:
app.tabBars.buttons.element(boundBy: 2).tap()