我正在测试 Xcode 7 的新 UI 测试功能(在 WWDC 2015 视频“ Xcode 中的 UI 测试”中介绍)。
在启动时,我的应用程序通过更新其垂直布局约束的值将“登录面板”动画化:面板从主视图下方(屏幕外)滑入视图。
该面板包含两个文本字段,用于用户名和密码。
当您点击用户名文本字段(标记为“下一步”)的键盘上的返回键时,密码文本字段将成为第一响应者。当您点击密码文本字段(标记为“开始”)的重新运行键时,面板被“关闭”(即,动画后退屏幕),活动指示器开始旋转并开始身份验证。
我记录了一个执行上述操作的测试,但是当我尝试“重现”它时,它似乎失败了,因为文本字段无法立即输入:
测试套件“选定测试”开始于 2015 年 8 月 14 日 13:14:19.454 测试套件“MyAppUITests”开始于 2015 年 8 月 14 日 13:14:19.454 测试用例“-[MyAppUITests.MyAppUITests testExample]”开始。
t = 0.00s 开始测试
t = 0.00s 设置
t = 0.00s 启动 com.myCompany.MyApp 2015-08-14 13:14:19.953 XCTRunner[4667:451922] 继续在后台运行测试,任务 ID 为 1
t = 2.64s 等待可访问性加载
t = 6.20s 等待应用空闲
t = 6.49s 点击“用户 ID”TextField
t = 6.49s 等待应用空闲
t = 6.57s 找到“用户 ID”文本字段
t = 6.57s com.myCompany.MyApp 的快照可访问性层次结构
t = 6.60s 查找:后代匹配类型 TextField
t = 6.60s 查找:匹配谓词“用户 ID”IN 标识符的元素
t = 6.60s 等待应用程序空闲
t = 6.67s 合成事件
t = 6.74s 将元素滚动到可见
t = 6.78s 断言失败:UI 测试失败 - 无法滚动到可见(通过 AX 操作)TextField 0x7fc90251a130:特征:146029150208,{{107.0,807.0},{200.0 , 30.0}},placeholderValue:'用户 ID',值:fffffaaaa,错误:执行 AXAction 2003 的错误 -25204:0:错误:-[MyAppUITests.MyAppUITests testExample]:UI 测试失败 - 无法滚动到可见(通过 AX 操作)TextField 0x7fc90251a130:特征:146029150208,{{107.0, 807.0},{200.0, 30.0}},placeholderValue:'用户 ID',值:fffffaaaa,错误:错误 - 25204 执行 AXAction 2003
t = 6.78s Tear Down Test Case '-[MyAppUITests.MyAppUITests testExample]' 失败(6.783 秒)。
测试套件“MyAppUITests”在 2015-08-14 13:14:26.238 失败。
执行 1 次测试,在 6.783 (6.784) 秒内有 1 次失败(0 次意外)
(强调我的。项目名称和包 ID 更改为假值)
我该如何处理这样的 UI?(即测试代码必须等待某个动画完成后,目标控件才可操作)
我不记得视频中提到了这些“时间”问题。