Как я могу избежать исключения NSInternalInconsistencyException при нажатии на элементы пользовательского интерфейса с помощью XCTest?

Начиная с обновления до xcode 9, некоторые из моих тестов пользовательского интерфейса начали бросать 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] + 

В Xcode 9 это может быть вызвано ошибкой между XCUITest и новым контролером потоков основного XCUITest Xcode 9. Более подробная информация содержится в этом сообщении в блоге .

Чтобы временно решить эту проблему до тех пор, пока Apple не исправит ее, отключите средство проверки основного потока в разделе «Тест» вашей схемы:

введите описание изображения здесь

Я закончил тем, что исправил это, сохранив элемент и просто используя ту же ссылку на него для последующих вызовов.

 XCUIElement *searchBar = self.app.searchFields[@"Search"]; [searchBar tap]; [searchBar typeText:@"Test Guy"]; 
Interesting Posts
Давайте будем гением компьютера.