【问题标题】:Tests on Bitrise (some consistently, some inconsistently) failing with "AX action" errorsBitrise 的测试(有些一致,有些不一致)因“AX 操作”错误而失败
【发布时间】:2025-12-15 23:25:05
【问题描述】:

我在 XCUITest 框架中为一个相当大的应用程序(该应用程序的存在时间比我在这家公司的几年)编写了许多测试。在我的笔记本电脑和其他工程师的笔记本电脑上,所有测试都始终如一地通过。

在 Bitrise 上运行测试时,第一个 UI 测试每次在设置阶段都会失败,并显示以下消息:

testFixtureAttachment,UI 测试失败 - 无法执行 AX 操作来监视(应用程序)的动画,错误:执行 AXAction 2043 时出现错误 -25204

其他测试通常会通过,但有时会失败并出现以下错误:

UI 测试失败 - 无法执行 AX 操作来监控(应用程序)的事件循环,错误:执行 AXAction 2042 的错误 -25204

UI 测试失败 - 无法滚动到可见(通过 AX 操作)TextField 0x7fe800f9fa20:特征:...错误:执行 AXAction 2003 时出现错误 -25204

我该如何解决这个问题,至少我的第一个测试不会在设置时总是失败?

【问题讨论】:

    标签: ios xcode-ui-testing bitrise


    【解决方案1】:

    根据 XCUITest 团队的反馈,出现这种情况是因为模拟器 CPU 不足,并且 AX Action 在启动应用时超时。通过使用电源管理来降低我的 CPU,我能够在我自己的机器上重现此问题(通常不会出现故障)。

    在 Bitrise 中增加 CPU 分配是显而易见的解决方案。但是,还有另一个奇怪的解决方案!

    在测试的设置函数之前,我有以下行:

    let app = XCUIApplication()

    这允许我的各种测试调用 app. 而不是更长的完整语法。

    发现删除此行是为了防止错误发生。这是通过这个 Apple 开发者论坛主题找到的:

    https://forums.developer.apple.com/thread/4472

    所以...希望它能为其他人解决这个问题,但它为我解决了这个问题。

    【讨论】:

    • 回复:“在 Bitrise 中增加 CPU 分配是显而易见的解决方案。” ...“发现删除此行以防止错误发生。”这表明这不是 CPU 分配问题,或者至少如果问题确实是 CPU 分配,这将如何解决问题似乎很奇怪。也就是说,我们一直在努力提高性能,但到目前为止,这个问题似乎与其他问题有关。某些项目会发生这种情况,但其他项目不会发生这种情况,并且可以通过您所描述的内容来解决。我们会密切关注,感谢您报告解决方案!
    • “看起来很奇怪”也是我的看法。当我使用电源管理的降级时它开始显现的事实表明CPU,但各方面的奇怪是正确的。
    【解决方案2】:

    这通常与较慢的环境有关。 Xcode 并不能很好地保证在较旧和较慢的机器上执行 UI 测试。这适用于虚拟化环境(例如 Bitrise.io 使用的那个),以及旧机器或使用 HDD 存储而不是 SSD 的机器。

    根据您的项目,有些变通方法可能有用,也可能没有帮助。您可以在以下网址找到相关问题和可能解决方案的列表:https://bitrise-io.github.io/devcenter/ios/known-xcode-issues/

    从链接中,在大多数情况下有效的解决方案:

    • 尝试另一个 Xcode 版本。
    • 尝试其他模拟器设备(例如,不要在“iPhone 6”中运行测试,而是尝试使用“iPhone 6s Plus”)
    • 一些用户成功地将测试拆分为多个方案,并使用单独的测试步骤分别运行这些方案。
    • 其他人报告说,如果您在 app.launch() 之后添加延迟,它可以为 Xcode/iOS 模拟器留出足够的时间来初始化辅助功能标签,以便 UI 测试可以通过辅助功能标签正确找到元素。李>

    相关 * 和其他论坛链接:

    【讨论】:

      最近更新 更多