【问题标题】:UI Testing Failure - No matches found for MenuItemsUI 测试失败 - 未找到 MenuItems 的匹配项
【发布时间】:2016-07-11 15:03:18
【问题描述】:

错误:UI 测试失败 - 未找到 MenuItems 的匹配项

  UIPasteboard.generalPasteboard().string = constant.password

  enterPasswordTextField.doubleTap()

  // Tap the Paste button to input the password
  app.menuItems["Paste"].tap()

我已经在我的测试用例中编写了这段代码,我什至尝试为模拟器禁用硬件键盘,但 doubletap() 函数仍然不起作用。

我正在使用 Xcode 7.3.1。

【问题讨论】:

    标签: ios swift ios9 xcode-ui-testing


    【解决方案1】:

    您需要为 menuItem 的出现添加一个期望值。请注意,doubleTap() 仅在文本字段已经获得焦点时才有效,因此您应该在双击之前添加一个额外的 tap()

        let app = XCUIApplication()
    
        UIPasteboard.generalPasteboard().string = "hello"
    
        let enterPasswordTextField = app.textFields["textField"]
        enterPasswordTextField.tap()
    
        expectationForPredicate(NSPredicate(format: "count > 0"), evaluatedWithObject: app.menuItems, handler: nil)
        enterPasswordTextField.doubleTap()
        waitForExpectationsWithTimeout(10.0, handler: nil)
    
        app.menuItems["Paste"].tap()
    

    请记住,将访问菜单项与本地化测试一起使用可能不是最佳主意,因为它可能会在非英语设备上的设备上失败。因此,您应该使用最复杂的逻辑来确定粘贴菜单项的位置。对于初学者,在文本字段为空的过度简化假设中,您可能需要替换

    app.menuItems["Paste"].tap()
    

    app.menuItems.elementsBoundByIndex(2).tap()
    

    【讨论】:

    • 嗨 Tomas 感谢您的回答,但它仍然无法正常工作。
    • 究竟是什么不工作?你有什么错误吗?
    • 嗨 Tomas 感谢您的回答,但它仍然无法正常工作。我尝试了相同的代码,但仍然出现错误,我想双击 SecureTextField 。(不是正常的 TextField)错误:异步等待失败:超过 10 秒的超时,预期未实现:“对象 count > 0: 0x7fb148f1cd60>".
    • 我也试过这个 ..MenuItems 选项没有在模拟器中弹出 ..我尝试禁用硬件键盘,但仍然双击()不适用于 SecureTextFeilds。
    • 你应该逐步执行测试代码,看看tapdoubleTap方法是否正确执行。检查在运行 tap 后文本字段是否获得焦点,并且在 doubleTap 之后您会看到菜单项
    【解决方案2】:

    https://stackoverflow.com/a/58246279/9109530

    当 isSecureTextEntry = true 你应该使用 app.secureTextFields 而不是 app.textFields 如下行

    let passwordField = app.secureTextFields["password"]
    

    【讨论】:

      【解决方案3】:

      分别点按两次 - 一次将焦点放在文本字段上,然后一次以调出菜单项。

      请注意,如果您以双击非活动文本字段的速度双击,则不会出现粘贴板菜单,因此只需尝试将操作分成两个单独的部分。如果需要,请在每次点击之间添加睡眠命令。

      【讨论】:

        猜你喜欢
        • 2016-04-14
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-24
        相关资源
        最近更新 更多