XCUITest:找不到匹配元素

XCUITest: Failed to find Matching Element

我在显示为儿童 ViewController 的 ViewController 上有一个关闭按钮。我打开了此按钮的辅助功能,辅助功能标识符是 closeButton。这个按钮没有任何文字,只有一张图片。

我正在尝试测试此视图的显示和关闭,但 运行 遇到问题,XCUITest 找不到该元素。我的测试代码是:

app.buttons["PresentChild"].tap()
XCTAssertTrue(app.otherElements["ChildViewController"].exists)
XCTAssertTrue(app.buttons["closeButton"].exists)

第一个断言通过,但第二个断言失败。

我尝试执行 "Record UI Test" 到 select 按钮以使其自动生成,但随后我收到一条错误消息 Failed to find Matching Element。我尝试擦除模拟器上的所有内容并删除所有派生数据,但也没有用。

有人知道 Xcode 中这个明显错误的解决方法吗?我无法通过录音访问该元素,我无法通过辅助功能访问该元素,我对如何访问此按钮一无所知。

我不知道你的断言到底有什么问题。但是这个步骤可能对你有帮助。

  • 在这一行打个断点XCTAssertTrue(app.otherElements["ChildViewController"].exists)
  • 现在运行测试用例。当控件到达这一行时,在调试器中键入这一行 po XCUIApplication().buttons.debugDescription 然后点击回车按钮
  • 它将打印您当前视图中的所有按钮。现在检查该列表中是否存在“closeButton
  • 如果存在,检查标识符名称。确保它是 "closeButton"(标识符区分大小写,标识符中的空格也很重要)
  • 如果标识符正确,请尝试找出 closeButton 的确切视图层次结构。意思是,不要像 app.buttons["closeButton"].exists 那样检查,而是尝试 app.navigationBars.otherElements["someName"].buttons["closeButton"].exists

(这看起来很有趣,但是给出元素的确切位置路径是一个很好的做法,有时它会起作用)

注意:如果系统在执行操作时无法找到具有正确标识符的元素,则会发生 UI 记录中的错误“Failed to find Matching Element”它。所以我的猜测是,您的 closeButton 没有正确的标识符,或者它没有添加到当前 window.

干杯!!