ios - Xcode UI 测试 : staticText's label not updating as text is updated?

标签 ios automation xcode-ui-testing

背景

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

相关文章:

ios - 检测 ABPersonCreatePeopleInSourceWithVCardRepresentation() 中的错误

Python Win32Gui 自动化 - 发送 WM_COPYDATA 从 BSPlayer 获取数据

ios - 如何在 XCode7 上对系统按钮进行自动化 UI 测试?

ios - 我可以并行运行多个 iOS UI 测试吗?

ios - 用户界面测试。如何检查键盘是否存在?

iphone - iOS 在 Xcode 4.6 中本地化启动画面

iphone - 在 UItableView EditingStyle Delete 中拯救单元格的问题

ios - 如何对类变量进行可用性检查

java - 自动注释 Java 类的程序/脚本

javascript - 将静态 HTML 页面转换为动态生成的 jQuery