【问题标题】:XCUITest for Multiple Text fields Keyboard is not hiding or the keyboard is not being focused on second text field用于多个文本字段的 XCUITest 键盘未隐藏或键盘未集中在第二个文本字段上
【发布时间】:2019-10-04 15:22:58
【问题描述】:

我正在使用 XCUITest,在它的一个简单屏幕中,只有用户名 textField、密码 textField 和一个登录按钮。 我可以像点击登录按钮一样断言,用户名文本字段和密码文本字段都是非空的。 但是该怎么做,我想在用户名和密码文本字段中输入文本。 只有当我使用以下代码出错时,第一个字段才有可能。

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'

【问题讨论】:

  • 我遇到了同样的问题,我尝试在 com.apple.iphonesimulator.plist 中添加一个测试指令,将 ConnectHardwareKeyboard 设置为 false,但问题仍然存在。

标签: swift xcuitest uitest


【解决方案1】:

我的第一个想法是当您尝试点击它以获得焦点时,您的密码文本字段被键盘隐藏。 您应该关闭键盘或稍微滚动一下以使文本字段可见。

您还可以使用isHittable 属性来确保可以点击元素。

【讨论】:

  • 不,它没有隐藏,因为我将它们放在键盘焦点区域上方。
  • 发生故障时能否添加截图?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2014-03-18
  • 2011-01-19
  • 2021-05-20
  • 1970-01-01
  • 2018-12-22
相关资源
最近更新 更多