(使用 Swift 进行 UI 测试)获取活动应用程序列表失败:AX 错误 -25205

Posted

技术标签:

【中文标题】(使用 Swift 进行 UI 测试)获取活动应用程序列表失败:AX 错误 -25205【英文标题】:(UI Testing with Swift) Failure getting list of active applications: AX error -25205 【发布时间】:2016-07-15 13:12:47 【问题描述】:

我们的测试运行良好,但没有明显的原因(检查提交),UI 测试只是停止在模拟器中工作(尚未在设备上测试)。每次它需要对 UI 组件(如 tap()typeText("string here"))执行操作时,我们都会在标题中看到错误,Failure getting list of active applications: AX error -25205

这是一切都出错的日志:

    t =    13.57s             Find: Elements matching predicate '"TextFieldUsuario" IN identifiers'
    t =    13.74s             Assertion Failure: UI Testing Failure - Failure getting list of active applications: AX error -25205
/Users/desenvolvimento/projetos/Mobile-ios/Mobile-iOSUITests/SupportUITests.swift:45: error: -[Mobile_iOSUITests.LoginViewControllerUITest testLoginComSucesso] : UI Testing Failure - Failure getting list of active applications: AX error -25205
2016-07-15 09:46:42.722 XCTRunner[22227:716756] -[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7f8728d66170
    t =    13.74s             Tear Down
/Users/desenvolvimento/projetos/Mobile-iOS/Mobile-iOSUITests/SupportUITests.swift:45: error: -[Mobile_iOSUITests.LoginViewControllerUITest testLoginComSucesso] : failed: caught "NSInvalidArgumentException", "-[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7f8728d66170"
(
    0   CoreFoundation                      0x0000000102552d85 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000101fc6deb objc_exception_throw + 48
    2   CoreFoundation                      0x000000010255bd3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x00000001024a1cfa ___forwarding___ + 970
    4   CoreFoundation                      0x00000001024a18a8 _CF_forwarding_prep_0 + 120
    5   XCTest                              0x0000000101a70fcb -[XCAXClient_iOS activeApplications] + 438
    6   XCTest                              0x0000000101a71eb9 -[XCAXClient_iOS interruptingUIElementAffectingSnapshot:] + 102
    7   XCTest                              0x0000000101a92ad9 -[XCUIElementQuery matchingSnapshotsHandleUIInterruption:withError:] + 180
    8   XCTest                              0x0000000101a83d74 __43-[XCUIElement resolveHandleUIInterruption:]_block_invoke + 238
    9   XCTest                              0x0000000101a63629 -[XCTestCase startActivityWithTitle:block:] + 350
    10  XCTest                              0x0000000101a83c79 -[XCUIElement resolveHandleUIInterruption:] + 140
    11  XCTest                              0x0000000101aa3d81 __63-[XCUIElement(XCUIElementEventSynthesis) _dispatchEvent:block:]_block_invoke + 82
    12  XCTest                              0x0000000101a63629 -[XCTestCase startActivityWithTitle:block:] + 350
    13  XCTest                              0x0000000101aa3d20 -[XCUIElement(XCUIElementEventSynthesis) _dispatchEvent:block:] + 405
    14  XCTest                              0x0000000101aa4ea7 -[XCUIElement(XCUIElementEventSynthesis) tap] + 121
    15  Mobile-iOSUITests                   0x0000000110d7cfca _TFC17Mobile_iOSUITests14SupportUITests13executarLoginfTCSo15XCUIApplication5loginSS5senhaSS_T_ + 1210
    16  Mobile-iOSUITests                   0x0000000110d7d653 _TFC17Mobile_iOSUITests14SupportUITests32performarLoginValidoComAplicacaofCSo15XCUIApplicationT_ + 627
    17  Mobile-iOSUITests                   0x0000000110d77d3a _TFC17Mobile_iOSUITests25LoginViewControllerUITest19testLoginComSucessofT_T_ + 138
    18  Mobile-iOSUITests                   0x0000000110d77d82 _TToFC17Mobile_iOSUITests25LoginViewControllerUITest19testLoginComSucessofT_T_ + 34
    19  CoreFoundation                      0x000000010243b5cc __invoking___ + 140
    20  CoreFoundation                      0x000000010243b41e -[NSInvocation invoke] + 286
    21  XCTest                              0x0000000101a5fef3 __24-[XCTestCase invokeTest]_block_invoke_2 + 362
    22  XCTest                              0x0000000101a94613 -[XCTestContext performInScope:] + 190
    23  XCTest                              0x0000000101a5fd78 -[XCTestCase invokeTest] + 169
    24  XCTest                              0x0000000101a603a2 -[XCTestCase performTest:] + 459
    25  XCTest                              0x0000000101a5dcf7 -[XCTestSuite performTest:] + 396
    26  XCTest                              0x0000000101a5dcf7 -[XCTestSuite performTest:] + 396
    27  XCTest                              0x0000000101a4ab10 __25-[XCTestDriver _runSuite]_block_invoke + 51
    28  XCTest                              0x0000000101a6bb4c -[XCTestObservationCenter _observeTestExecutionForBlock:] + 640
    29  XCTest                              0x0000000101a4aa55 -[XCTestDriver _runSuite] + 453
    30  XCTest                              0x0000000101a4b7d1 -[XCTestDriver _checkForTestManager] + 259
    31  XCTest                              0x0000000101a95a9a _XCTestMain + 628
    32  CoreFoundation                      0x00000001024782ec __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    33  CoreFoundation                      0x000000010246df75 __CFRunLoopDoBlocks + 341
    34  CoreFoundation                      0x000000010246d6d2 __CFRunLoopRun + 850
    35  CoreFoundation                      0x000000010246d0f8 CFRunLoopRunSpecific + 488
    36  GraphicsServices                    0x000000010460dad2 GSEventRunModal + 161
    37  UIKit                               0x0000000102908f09 UIApplicationMain + 171
    38  XCTRunner                           0x00000001019cf8ad XCTRunner + 6317
    39  libdyld.dylib                       0x0000000104e2f92d start + 1
)

我找到了有类似问题的人,但他们似乎都没有找到解决我们案例的方法:

结果 1:

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

解决方案: 安装 El Capitan 并更新 Xcode;我们已经在 El Capitan,我们的 Xcode 是根据 App Store 应用。

结果 2:

iOS UI Testing : Failure getting list of active applications: AX error -25205

解决方案:所有答案都没有给出解决方案。

结果 3:

UITesting Failure getting list of active application

解决方案:在设备上“启用 UI Atomation”(设置 > 开发人员)。它已在模拟器中启用。

我的 Xcode 版本是 7.3.1 (7D1014),OS X 版本是 10.11.4 (15E65)。

有人知道如何解决这个问题吗?也许将 El Capitan 更新到最新版本?

【问题讨论】:

试试 Xcode 8?或者也许回到另一个方向?我的经验是,UI 测试在 Xcode 7.3.1 中几乎被破坏了。 那么在 Xcode 8 中更好吗? 这对我来说好多了,但是 YMMV。这就是为什么我建议你至少尝试一下。 Xcode 8 下载失败,但我们已降级到 Xcode 7.3.0,现在可以使用了 :) 哇!嗯,这是有用的信息。您应该回答自己的问题(并且在 48 小时内您可以接受自己的回答)。 — 我很好奇为什么 Xcode 8 不工作。如果这是 7.3.1 中引入的错误并且在 8 中仍然存在,您绝对应该向 Apple 提交错误报告。 【参考方案1】:
[Mobile_iOSUITests.LoginViewControllerUITest testLoginComSucesso] 

似乎是真正的原因。由于方法名称 testLoginComSucesso 中有错字,您确定您调用的方法是否正确?

因为跟随而抛出异常

[NSObject(NSObject) doesNotRecognizeSelector:]

您的 LoginViewControllerUITest 似乎无法识别该方法

【讨论】:

考虑到我调用该测试直接抛出 Xcode(按下左侧的小球)并且这些指令在该方法中,我确信这不是原因。此外,该电话的例外情况是:[__NSCFString countByEnumeratingWithState:objects:count:];我想这是由于 AX 错误而被调用的。 你能发布你的 testLoginComSuccesso 实现吗?【参考方案2】:

感谢马特,我找到了解决方案。这似乎是 Xcode 7.3.1 的一个错误。降级到 Xcode 7.3.0 解决了这个问题。

编辑: 如果有人正在寻找 Xcode 7.3.0 以供下载,您可以在这里找到它: https://developer.apple.com/download/more/

【讨论】:

以上是关于(使用 Swift 进行 UI 测试)获取活动应用程序列表失败:AX 错误 -25205的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 7.0.1 中进行 UI 测试时,是不是可以使用 Swift 滚动到 Element()?

从 Maps Intent espresso 回到活动 - UI 测试

在 UI 测试 Swift 中处理来自 API 的答案

回到地图意图espresso - UI测试的活动

iOS UI 测试:获取图像文件名 (Swift)

使用 Kif 进行 Swift UI 测试