首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 9 UI测试-测试失败,因为目标控制不可用(目前为止)

iOS 9 UI测试-测试失败,因为目标控制不可用(目前为止)
EN

Stack Overflow用户
提问于 2015-08-14 04:33:47
回答 1查看 7.1K关注 0票数 5

我正在测试Xcode 7的新UI测试功能(在2015年Xcode中的UI测试视频中引入)。

在启动时,我的应用程序通过更新其垂直布局约束的值,将一个“登录面板”动画化:面板从主视图下方(离屏幕)滑入视图。

该面板包含两个文本字段,用于用户名和密码。

当您点击键盘上用户名文本字段(标记为"Next")的返回键时,密码textfield将成为第一个响应者。当您点击密码文本字段(标记为"Go")的retrun键时,面板将被“拒绝”(即,动画退出屏幕),活动指示器开始旋转,身份验证开始。

我记录了一个执行上述操作的测试,但是当我试图“复制”它时,它似乎失败了,因为文本字段无法立即输入:

测试套件‘选择测试’启动于2015年-08-14 13:14:19.454测试套件'MyAppUITests‘从2015年开始-1413:14:19.454测试用例’-MyAppUITests.MyAppUITes testExample‘启动。 T= 0.00s起动试验 T= 0.00s设置 T= 0.00s启动com.myCompany.MyApp 2015-08-14 13:14:19.953 XCTRunner4667:451922继续使用任务ID 1在后台运行测试 T= 2.64s等待可访问性加载 T=6.20等待app空闲 T= 6.49s Tap“用户ID”TextField T= 6.49s等待app空闲 T=6.57找到“用户ID”TextField T= 6.57s com.myCompany.MyApp快照可访问性层次结构 T=6.60查找:后代匹配类型TextField T=6.60查找:匹配标识符中谓词‘“用户ID’的元素 T=6.60等待app空闲 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,错误:错误-25204执行AXAction 2003 :0:错误:-MyAppUITests.MyAppUITests testExample:UI测试失败-未能滚动到可见(由AX操作) TextField 0x7fc90251a130:特征: 146029150208,{{107.0,807.0},{200.0,30.0},placeholderValue:‘用户ID',值: fffffaaaa,错误: Error -25204执行AXAction 2003 T= 6.78s撕毁测试用例‘-MyAppUITests.MyAppUITest.MyAppUITes testExample’failed (6.783秒)。 测试套件“MyAppUITests”在2015-08-14 13:14:26.238失败。 在6.783 (6.784)秒内执行1次测试,1次失败(0次意外)

(强调我的。项目名称和包id更改为假值)

我如何处理这样的UI?(也就是说,测试代码必须等待某个动画完成,然后目标控件才可操作)

我不记得那个视频提到了这样的“时机”问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 13:40:51

我建议使用来反对运行循环中的,而使用内置的XCTest异步API。例如:

代码语言:javascript
复制
let app = XCUIApplication()
app.launch()

let textField = app.textField["user name"]
let existsPredicate = NSPredicate(format: "exists == 1")

expectationForPredicate(existsPredicate, evaluatedWithObject: textField, handler: nil)
waitForExpectationsWithTimeout(5, handler: nil)

textField.tap()
textField.type("joemasilotti")

这将等到屏幕上实际存在带有可访问性标签/标识符"username“的文本字段。然后它将点击文本字段,使其活动,并键入我的用户名。如果在此之前通过了5秒,那么测试就会失败。

我还在我的博客上写了一篇关于如何使用UI测试的文章,并为这样的场景组合了一个UI测试备忘单

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32002330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档