错误: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。
答案 0 :(得分:3)
您需要为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()
请记住,使用本地化测试访问menuitem可能不是最好的主意,因为它可能会在非英语设备上的设备上失败。因此,您应该使用最复杂的逻辑来确定粘贴菜单项的位置。对于初学者来说,在过度简化的假设中,文本字段为空,您可能想要替换
app.menuItems["Paste"].tap()
带
app.menuItems.elementsBoundByIndex(2).tap()
答案 1 :(得分:0)
分别进行两次点击 - 一次用于对焦于文本字段,然后一次用于调出菜单项。
观察一下,如果双击非活动文本字段的速度双击,则不会出现粘贴板菜单,因此请尝试将操作分成两个单独的部分。如果需要,请在每次点击之间添加一个睡眠命令。
答案 2 :(得分:0)
https://stackoverflow.com/a/58246279/9109530
当isSecureTextEntry = true时,应使用app.secureTextFields而不是app.textFields,如下面的行
let passwordField = app.secureTextFields["password"]