XCUI 测试:如何单击运行时填充的标签
Posted
技术标签:
【中文标题】XCUI 测试:如何单击运行时填充的标签【英文标题】:XCUI Test: How to click Labels populated at run time 【发布时间】:2017-07-24 20:39:43 【问题描述】:我正在尝试单击在运行时填充和缓存的标签。 TableViewCell 有一个在运行时决定的 UILabel。所以我不能向它添加辅助功能标识符。但是我给UILabel添加了一个标识符,但是这个视图重复了好几次,当我在寻找一个标签时
[tablesQuery.staticTexts[@"Channels"] tap];
我收到一个错误,找到多个匹配项
我在tableView的UILabel中添加了一个标识符,myIdentifier。
如何访问标签以自动点击?
来自 app.debugDescription
Assertion Failure: Smoke.m:238: No matches found for "Recents" StaticText
Query input was (
StaticText 0x600000563840: traits: 8589934656, 40.0, 90.0, 211.0, 21.0, identifier: 'navScreenTitle', label: 'Speaker',
StaticText 0x600000563900: traits: 8589934656, label: 'No Volume Available',
StaticText 0x6000005639c0: traits: 8589934656, 40.0, 90.0, 211.0, 21.0, identifier: 'navScreenTitle', label: 'Speaker',
StaticText 0x600000563a80: traits: 8589934656, label: 'No Volume Available',
StaticText 0x600000563b40: traits: 8589934656, 40.0, 90.0, 211.0, 21.0, identifier: 'navScreenTitle', label: 'Speaker',
StaticText 0x600000563c00: traits: 8589934656, label: 'No Volume Available',
StaticText 0x600000563cc0: traits: 8589934656, 40.0, 90.0, 211.0, 21.0, identifier: 'navScreenTitle', label: 'Speaker',
StaticText 0x600000563d80: traits: 8589934656, label: 'No Volume Available'
更新: 我尝试以这种方式访问元素:
XCUIElement *speakerStaticText = tablesQuery.staticTexts[@"navScreenTitle"] ;
[speakerStaticText tap];
结果
`↳Table 0x6000005681c0: traits: 35192962023424, 0.0, 77.0, 330.0, 590.0
↳Cell 0x6000005684c0: traits: 8589934592, 0.0, 79.0, 330.0, 88.0
⋅ ↳StaticText 0x600000568340: traits: 8589934656, 40.0, 90.0, 211.0, 21.0, identifier: 'navScreenTitle', label: 'Speaker'
↳Cell 0x6000005699c0: traits: 8589934593, 0.0, 167.0, 330.0, 44.0
⋅ ↳StaticText 0x600000569900: traits: 8589934656, 40.0, 178.0, 257.0, 21.0, identifier: 'navScreenTitle', label: 'Status'
↳Cell 0x60000056aec0: traits: 8589934593, 0.0, 213.0, 330.0, 44.0
⋅ ↳StaticText 0x60000056ae00: traits: 8589934656, 40.0, 224.0, 257.0, 21.0, identifier: 'navScreenTitle', label: 'Recents'
↳Cell 0x60000056c3c0: traits: 8589934593, 0.0, 257.0, 330.0, 44.0
⋅ ↳StaticText 0x60000056c300: traits: 8589934656, 40.0, 268.0, 257.0, 21.0, identifier: 'navScreenTitle', label: 'Contacts'
↳Cell 0x60000056d8c0: traits: 8589934593, 0.0, 301.0, 330.0, 44.0
⋅ ↳StaticText 0x60000056d800: traits: 8589934656, 40.0, 312.0, 257.0, 21.0, identifier: 'navScreenTitle', label: 'Channels'
↳Cell 0x60000056ec40: traits: 8589934593, 0.0, 347.0, 330.0, 44.0
↳StaticText 0x60000056eb80: traits: 8589934656, 40.0, 358.0, 257.0, 21.0, identifier: 'navScreenTitle', label: 'Options'`
我无法隔离并点击特定标签最近 请建议我如何做到这一点。
【问题讨论】:
【参考方案1】:这适用于 Objective-C
[[[[app staticTexts] matchingIdentifier:@"Recents"]elementBoundByIndex:0]tap];
在 Swift 中:
XCUIApplication().staticTexts.matching(identifier: "Recents").element(boundBy: 0).tap()
【讨论】:
以上是关于XCUI 测试:如何单击运行时填充的标签的主要内容,如果未能解决你的问题,请参考以下文章
打开 url 外部浏览器时是不是可以测试 uitest (XCUI)?