代码之家  ›  专栏  ›  技术社区  ›  john doe

Xcode UI测试找不到passwordTextField

  •  0
  • john doe  · 技术社区  · 4 年前

    我在Xcode中编写一个简单的UI测试,遇到了一些问题。我有usernameTextField和passwordTextField。我无法引用passwordTextField。这是我的测试和错误。

    func test_should_create_an_account_and_take_them_to_confirmation_screen() {
    
            let usernameTextField = self.app.textFields["usernameTextField"]
            usernameTextField.tap()
            usernameTextField.typeText("johndoe")
    
            let passwordTextField = self.app.textFields["passwordTextField"]
            passwordTextField.tap()
            passwordTextField.typeText("password123")
    
            self.app.buttons["registerButton"].tap()
    
            XCTAssertEqual(self.app.navigationBars.element.identifier, "BankAccount.LoginViewController")
    
        }
    

    enter image description here

    1 回复  |  直到 4 年前
        1
  •  1
  •   shim    4 年前

    正如您在错误中看到的,它能够很好地找到文本字段,但无法激活键盘。

    在模拟器中,“硬件”>“键盘”>“连接硬件键盘”,确保未选中该选项。

    可能您已将用户名字段设置为成为中的第一个响应者 viewDidLoad 或者类似的东西,所以这就是为什么它对其中一个有效,而不是另一个。

    (我还没有看到在运行测试时以编程方式关闭硬件键盘的可靠解决方案,但如果有人知道,我很想知道。不幸的是,我认为当模拟器退出时,此设置会重置。)

    另一个解决方案是切换软件键盘,但在硬件键盘断开连接的情况下应该更可靠。