使用XCTest点击UI元素时,如何避免NSInternalInconsistencyException?

Pau*_*aul 12 xcode ios xctest swift

自从升级到xcode 9以来,我的一些UI测试开始抛出一条NSInternalInconsistencyException消息

范围完成后无法使用活动

当我打电话时发生该问题tap()XCUIElement.我可以看到该元素是一个有效的按钮,它已启用.

任何有关修复或解决此问题的帮助将非常感谢!

异常的堆栈跟踪顶部是:

0   CoreFoundation                      0x00000001035ad1cb __exceptionPreprocess + 171
1   libobjc.A.dylib                     0x0000000102f0ff41 objc_exception_throw + 48
2   CoreFoundation                      0x00000001035b2362 +[NSException raise:format:arguments:] + 98
3   Foundation                          0x00000001029b4089 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
4   XCTest                              0x00000001027d4018 -[XCActivityRecord _synchronized_ensureValid] + 153
5   XCTest                              0x00000001027d3b0b -[XCActivityRecord _synchronized_addAttachment:] + 39
6   XCTest                              0x00000001027d3c98 -[XCActivityRecord addAttachment:] + 37
7   XCTest                              0x00000001027c0935 -[XCActivityRecord(UITesting) attachAutomaticScreenshot] + 265
8   XCTest                              0x00000001027f84b3 __43-[XCUIElement resolveHandleUIInterruption:]_block_invoke + 1465
9   XCTest                              0x0000000102814788 -[XCTContext _runActivityNamed:type:block:] + 185
10  XCTest                              0x00000001027f7eed -[XCUIElement resolveHandleUIInterruption:] + 139
11  XCTest                              0x000000010282b5d1 __63-[XCUIElement(XCUIElementEventSynthesis) _dispatchEvent:block:]_block_invoke + 81
12  XCTest                              0x0000000102814788 -[XCTContext _runActivityNamed:type:block:] + 185
13  XCTest                              0x000000010282b500 -[XCUIElement(XCUIElementEventSynthesis) _dispatchEvent:block:] + 315
14  XCTest                              0x000000010282d242 -[XCUIElement(XCUIElementTouchEvents) tap] + 
Run Code Online (Sandbox Code Playgroud)

Aar*_*ger 13

在Xcode 9中,这可能是由于XCUITest新的Xcode 9主线程检查程序之间的错误引起的.更多详细信息,请参阅此博客文章.

要在Apple修复此问题之前暂时解决此问题,请在您的方案的"测试"部分中禁用主线程检查器:

在此输入图像描述