UI测试标签栏控制器

时间:2016-10-25 02:09:55

标签: ios swift xcode xcode-ui-testing

我已经构建了一个带有3个标签的简单标签栏。

enter image description here

我想运行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()
}

4 个答案:

答案 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)

my GitHub repo for a more detailed UI Testing example

答案 3 :(得分:0)

如果有人发现要通过UI测试另一个应用程序的内容,我就找到了解决方案。

选项卡栏项是一个惰性变量,需要先进行触摸,然后才能按值引用选项卡栏按钮。添加此行:

tabBarItem.accessibilityIdentifier = "my-snazzy-identifier"

到viewDidLoad方法,您应该可以在UI测试中做到这一点:

app.tabBars.buttons["Button Title"].tap()