如何为我是否导航到正确的屏幕编写 XCUI 测试?

sss*_*sss 5 testing ui-testing ios swift xcode-ui-testing

我正在编写用于跟踪 UI 的测试 UI 测试用例 在此处输入图片说明

我想测试登录单击是否在仪表板屏幕上正确导航。

有没有办法做到这一点?

我目前的测试代码就像

func testExample() {

        let usernameTextField = app.textFields["Username"]
        usernameTextField.tap()
        usernameTextField.typeText("abc@gmail.com")

        let passwordTextField = app.textFields["Password"]
        passwordTextField.tap()
        passwordTextField.typeText("abc123")

        app.buttons["Login" ].tap()

                //let loginButton = app.staticTexts["Login"]
                //XCTAssertEqual(loginButton.exists, true)

        app.navigationBars["UIView"].buttons["Back"].tap()


    }
Run Code Online (Sandbox Code Playgroud)

Dan*_*los 5

当依赖于文本值时,UI 测试可能会变得非常脆弱。我鼓励您做的是为您的 ViewController 的view. 这样,即使您更改标题或更改整个布局,您仍然可以确保您位于正确的页面/屏幕/视图中。

class DashVC: UIViewController {
    override func viewDidLoad() {
        view.accessibilityIdentifier = "view_dashboard"
    }
}



    func test_login_withValidInput_goesDashBoard() {
        let app = XCUIApplication()

        //...    
        app.buttons["Login" ].tap()

        let dashBoardView = app.otherElements["view_dashboard"]
        let dashBoardShown = dashBoardView.waitForExistence(timeout: 5)

        XCTAssert(dashBoardShown)

    }
Run Code Online (Sandbox Code Playgroud)


pes*_*sch 0

尝试向后退按钮添加可访问性指示器,以便您可以使用backButton.exists或检查可用性backButton.hittable并相应地断言。无论如何,如果您设置

\n\n
\n

失败后继续 = false

\n
\n\n

在setUp()中,如果\xe2\x80\x99找不到带有\xe2\x80\x9cBack\xe2\x80\x9d的按钮,你的测试就会失败。

\n