【发布时间】:2018-11-27 20:19:11
【问题描述】:
我在 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 中这个明显错误的解决方法吗?我无法通过录制访问元素,我无法通过辅助功能访问元素,我对如何访问此按钮一无所知。
【问题讨论】:
-
Xcode 会在每次测试失败时截取屏幕截图。转到 Test Navigator (
Cmd + 6),右键单击失败的测试并选择 Jump to Report。报告上的条目应该包含一个屏幕截图,帮助您了解应用程序在运行第二个断言时的状态 -
@CodeDifferent 是的,这并没有多大帮助。刚刚确认关闭按钮实际上是在 XCTAssertTrue 时显示的。
-
用户可以选择关闭按钮吗?是否有覆盖整个屏幕的半透明视图?如果没有看到任何关于您的应用的信息,就无法诊断出问题所在。
-
是的,该按钮是可选择的。不,没有覆盖整个屏幕的视图。如果有帮助,我的视图控制器架构将变为
UITabBarController -> UINavigationViewController -> ParentViewController -> ChildViewController子视图控制器通过以下方式添加到应用程序中:1)通过以下方式添加子视图:UIApplication.shared.keyWindow?.addSubview(childViewController.view),然后 2)通过:childViewController.didMove(toParentViewController: parentViewController)将子视图移动到父级跨度>
标签: ios swift xcode automated-tests xcuitest