gpt4 book ai didi

ios - 如何进行UITest UIProgressView?

转载 作者:行者123 更新时间:2023-11-29 00:11:47 26 4
gpt4 key购买 nike

情况:

我想对我的进度 View 进行 UI 测试,看看它的进度是否有所增加。

我尝试过的:

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

它叫做:其他,0x6080003869a0,特征:8589935104,{{16.0, 285.5},{343.0, 32.0}},标识符:'progressView',标签:'进度',值:5%

我使用 let ProgressView = secondaryTableViewCell.otherElements["progressView"] 访问它,它可以工作,因为 .exists 返回 true。

现在,要检查进度,上面的描述暗示了“值”属性,当前为 5%。但是,当我尝试 progressView.value 作为! String 或 Double 或任何一个,我似乎无法获得该属性,因为它不符合 NSCoder 标准。

问题:

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

我的最终自定义解决方案:

现在以某种方式使用 value 属性(当转换为 String 时)确实有效。因为我想检查进度是否随时间增加,所以我剥离了字符串以获取其中的数字进度以进行比较。这是我现在使用的解决方案:

// 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)

最佳答案

XCUIElement 符合 XCUIElementAttributes,它使您可以访问 Any? 类型的 value 属性

>

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

这有效(前提是您将进度 View 的辅助功能标识符设置为“progressView”):

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 查询(请参阅上面代码中的注释)

关于ios - 如何进行UITest UIProgressView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46344733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com