XCUITest:找不到匹配元素

时间:2018-06-18 23:28:26

标签: ios swift xcode automated-tests xcuitest

我在ViewController上有一个关闭按钮,它被呈现为ChildViewController。我已打开此按钮的辅助功能,辅助功能标识符为closeButton。这个按钮没有任何文字,它只有一个图像。

我正在尝试测试此视图的显示和解雇,但遇到问题,XCUITest无法找到该元素。我的测试代码是:

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

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

我尝试执行“记录UI测试”以选择按钮以自动生成它,但后来我收到错误Failed to find Matching Element。我尝试删除模拟器上的所有内容并删除所有派生数据,但这也无效。

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

1 个答案:

答案 0 :(得分:0)

我不知道您的主张的确切问题是什么。但是此步骤可能会对您有所帮助。

  • 在此行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没有正确的标识符,或者没有添加到当前窗口中。

干杯!