背景
我正在研究将基于 Appium 的自动化迁移到 Xcode UI 测试。鉴于我们的应用程序是用 Objective C 编写的,我还需要使用 Objective-C 来编写测试代码。
我正在自动化测试的应用程序有一个进度条,我想读取其值。这不是UIAProgressIndicator ,只是一个 UIAStaticText
,其值从“0”增加到“100%”。
与此 staticText 对应的 XCUIElement
可以通过以下方式访问:
[[app staticTexts] elementBoundByIndex:1]
进度条将花费不同的时间 - 我需要监视进度,这将涉及读取值(当然还要解析它)。
我尝试使用各种方法获取值 - [XCUIElement value]
和 [XCUIElement label]
。
NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label];
label
方法正在获取进度字符串,因此我在循环中执行此操作,例如
int i=0;
while (i<5) {
//custom sleep method
[self.helper threadSleepForSeconds:[NSNumber numberWithInt:2]];
//now get progress text
NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label];
i++;
}
但是,随着进度的变化,label
属性不会更新 - 它似乎一直显示读取的第一个值,就好像它被缓存在某个地方一样。
即日志输出显示(假设读取的第一个值为 19%):
19%
19%
19%
19%
我完全无法弄清楚为什么会发生这种情况。有什么帮助吗?
最佳答案
没有合成事件,因此 Xcode 不会尝试拍摄屏幕上 UI 元素的新快照。这是设计使然,以便在特定 View 中分配多个 ui 元素变量不会使您的计算机重载。
不幸的是,如果您对单元测试不满意,手动测试可能是您唯一的选择。
关于ios - Xcode UI 测试 : staticText's label not updating as text is updated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034991/