首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何UITest UIProgressView?

如何UITest UIProgressView?
EN

Stack Overflow用户
提问于 2017-09-21 13:04:46
回答 1查看 1.2K关注 0票数 0

形势:

我想要UI-测试我的进度视图,看看它的进度是否增加了。

我尝试过的:

通过在UI测试中使用断点并使用po print(app.debugDescription),我可以成功地看到和访问UIProgressView元素。

它叫做:Other, 0x6080003869a0, traits: 8589935104, {{16.0, 285.5}, {343.0, 32.0}}, identifier: 'progressView', label: 'Progress', value: 5%

let progressView = secondTableViewCell.otherElements["progressView"]返回true时,我使用.exists访问它,这是可行的。

现在,为了检查进度,上面的描述提示了“value”属性,该属性目前为5%。然而,当我尝试progressView.value as! String或Double或任何一个,我似乎不能得到的属性,因为它是不符合NSCoder。

问题:

是否有可能对UIProgressView进行UI测试并使用它的进度值?

我的最后一个定制解决方案:

以某种方式使用value属性(当转换为String时)现在起作用了。由于我想检查进度是否随着时间的推移而增加,所以我剥去字符串以获得其中的数字进度以进行比较。下面是我现在使用的解决方案:

代码语言:javascript
复制
// Check if progress view increases over time
let progressView = secondTableViewCell.otherElements["progressView"]
XCTAssert(progressView.exists)

let progressViewValueString = progressView.value as! String
// Extract numeric value from '5%' string
let progressViewValue = progressViewValueString.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()

// Let progress increase
sleep(3)

let newProgressViewValueString = progressView.value as! String
let newProgressViewValue = newProgressViewValueString.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
XCTAssert(newProgressViewValue > progressViewValue)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 09:39:17

XCUIElementAttributes允许您访问类型为Any?value属性。

运行时的实际value类型取决于您正在查询的UI元素的类型。对于UIProgressView,它是__NSCFString类型的,它是NSString的一个具体子类。这意味着您可以安全地将其转换为String

这是可行的(前提是将进度视图的可访问性标识符设置为"progressView"):

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

   let progressView = app.progressIndicators["progressView"]
   // alternative (if the above query does not work):
   // let progressView = app.otherElements["progressView"]
   let currentValue = progressView.value as? String
   XCTAssertEqual(currentValue, "5 %")
}

奇怪的是,在某些情况下,progressIndicator查询无法工作。在这种情况下,您可以尝试一个otherElements查询(请参阅上面代码中的注释)

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

https://stackoverflow.com/questions/46344733

复制
相关文章

相似问题

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