Xcode UI测试:staticText的标签在文本更新时没有更新?

时间:2015-12-02 04:34:25

标签: ios automation xcode-ui-testing

背景

我正在研究将基于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%

我无法弄清楚为什么会这样。有帮助吗?

1 个答案:

答案 0 :(得分:2)

没有合成事件,因此Xcode不会尝试在屏幕上拍摄UI元素的新快照。这是设计使得在特定视图中分配多个ui元素变量不会使您的计算机过度工作。

不幸的是,如果您对单元测试不满意,手动测试可能是您唯一的选择。