背景
我正在研究将基于Appium的自动化迁移到Xcode UI Testing。鉴于我们的应用程序是用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%
我无法弄清楚为什么会这样。有帮助吗?
答案 0 :(得分:2)
没有合成事件,因此Xcode不会尝试在屏幕上拍摄UI元素的新快照。这是设计使得在特定视图中分配多个ui元素变量不会使您的计算机过度工作。
不幸的是,如果您对单元测试不满意,手动测试可能是您唯一的选择。