多个文本字段的XCUITest键盘没有隐藏或键盘没有集中在第二个文本字段上

时间:2019-05-17 09:54:01

标签: swift xcuitest uitest

我正在使用XCUITest,在一个简单的屏幕上,它只有用户名textField,密码textField和登录按钮。 我可以断言就像点击“登录”按钮一样,用户名textField和密码textField都不为空。 但是,要做些什么,我想在用户名和密码textFields中键入Text。 仅当我在以下代码中遇到错误时,才有可能在第一个字段上使用

func testUserNameShouldNotBeEmptyOnLoginButtonTapped() {

        app.launch()

        let loginButton = app.buttons["Login"]

        let userNameField = app.textFields["UsernameTextField"]
        userNameField.tap()
        userNameField.typeText("Dummy User")
        sleep(2)

        let passwordField = app.textFields["PasswordTextField"]
        passwordField.tap()
        passwordField.typeText("Yohooooooso")

        loginButton.tap()

        XCTAssertTrue(userNameField.exists)
        guard let userNameValue = userNameField.value as? String,
        let passwordValue = passwordField.value as? String else {
            XCTAssert(true, "UsernameTextFieldUsernameTextFieldUsernameTextField")
            return
        }
        if passwordValue.isEmpty {
            XCTAssert(false, "Password Cannot be Empty")
        } else if userNameValue.isEmpty {
            XCTAssert(false, "UserName Cannot be empty")
        } else {
            XCTAssert(true, "Both Fields are valid")
        }
    }

如何更改键盘的焦点以选择字段,或者在第一个字段上用typeText完成后隐藏键盘。

我在passwordTextField上遇到了异常,如下所示

Neither element nor any descendant has keyboard focus. Event dispatch snapshot: TextField, identifier: 'PasswordTextField'

1 个答案:

答案 0 :(得分:0)

我的第一个想法是,当您尝试点按以获取焦点时,键盘会隐藏您的密码文本字段。 您应该关闭键盘或滚动一点以使文本字段可见。

您还可以使用isHittable属性来确保可以命中元素。