我已经构建了一个带有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()
}
答案 0 :(得分:3)
如果每个标签栏上显示的每个视图控制器中都有不同的控件,则可以进行断言(如果存在或不存在(预期的内容))。 例如,如果第一个标签栏的UILabel名为"名字"你可以通过写
断言它是否存在Let theLabel = app.staticTexts["myValue"]
XCTAssert(theLabel.exists).to(beTrue)
在其他屏幕上对不同的控件执行相同的操作。
答案 1 :(得分:3)
您可以通过其位置访问标签栏按钮:
app.tabBars.buttons.element(boundBy: 2).tap()
答案 2 :(得分:0)
您可以测试导航栏的标题。
XCTAssert(app.navigationBars["Graphs"].exists)
答案 3 :(得分:0)
如果有人发现要通过UI测试另一个应用程序的内容,我就找到了解决方案。
选项卡栏项是一个惰性变量,需要先进行触摸,然后才能按值引用选项卡栏按钮。添加此行:
tabBarItem.accessibilityIdentifier = "my-snazzy-identifier"
到viewDidLoad方法,您应该可以在UI测试中做到这一点:
app.tabBars.buttons["Button Title"].tap()