2

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

我正在尝试测试此视图的呈现和解除,但遇到了一个问题,XCUITest 找不到该元素。我的测试代码是:

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

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

我尝试执行“记录 UI 测试”以选择按钮以使其自动生成,但随后我收到一条错误消息Failed to find Matching Element。我尝试擦除模拟器上的所有内容并删除所有派生数据,但这也不起作用。

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

4

1 回答 1

1

我不知道您的断言的确切问题是什么。但这些步骤可能会对您有所帮助。

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

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

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

干杯!!

于 2018-06-20T06:54:02.677 回答