UI 测试失败 - 未找到 MenuItems 的匹配项
Posted
技术标签:
【中文标题】UI 测试失败 - 未找到 MenuItems 的匹配项【英文标题】:UI Testing Failure - No matches found for MenuItems 【发布时间】:2016-07-11 15:03:18 【问题描述】:错误:
UIPasteboard.generalPasteboard().string = constant.password
enterPasswordTextField.doubleTap()
// Tap the Paste button to input the password
app.menuItems["Paste"].tap()
我已经在我的测试用例中编写了这段代码,我什至尝试为模拟器禁用硬件键盘,但 doubletap() 函数仍然不起作用。
我正在使用 Xcode 7.3.1。
【问题讨论】:
【参考方案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 秒的超时,预期未实现:“对象tap
和doubleTap
方法是否正确执行。检查在运行 tap
后文本字段是否获得焦点,并且在 doubleTap
之后您会看到菜单项【参考方案2】:
https://***.com/a/58246279/9109530
当 isSecureTextEntry = true 你应该使用 app.secureTextFields 而不是 app.textFields 如下行
let passwordField = app.secureTextFields["password"]
【讨论】:
【参考方案3】:分别点按两次 - 一次将焦点放在文本字段上,然后一次以调出菜单项。
请注意,如果您以双击非活动文本字段的速度双击,则不会出现粘贴板菜单,因此只需尝试将操作分成两个单独的部分。如果需要,请在每次点击之间添加睡眠命令。
【讨论】:
以上是关于UI 测试失败 - 未找到 MenuItems 的匹配项的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10 UI 测试原因:Cocoapods 未找到图像
计时器经过后,SwiftUI 应用程序的 UI 测试未找到设置了可访问性标识符的元素
使用 Pycharm 执行 .robot 时,Pybot 给出错误“未找到关键字”和“导入测试库失败”