После сборки моего приложения в Xcode 11 и запуска моего набора XCUITests я получаю много случайных сбоев со следующим.
Не удалось получить совпадающие снимки: ошибка при получении главного окна kAXErrorServerNotFound
Независимо от того, как долго я увеличиваю время ожидания, проблемы появляются периодически. Кажется, возникают проблемы со снимками в иерархии пользовательского интерфейса. Наши тесты проходят последовательно в Xcode 10.
Я переустановил Xcode. Удалил все симуляторы. Очищенные производные данные. Измененные таймауты. Обновлен с Xcode 11.1 до Xcode 11.2.1.
Спасибо!
Ответы:
У меня была проблема с соответствием, когда я запускал простой UITest в Xcode 11.3. Чтобы все заработало, сначала нужно было вставить:
XCUIApplication().activate()
илиXCUIApplication().launch()
.источник
Я столкнулся с той же проблемой с Xcode 11 и понял, что бегущий тест не был убит при остановке тестов (или если тест потерпел крах по какой-то причине). Повторный запуск тестов привел бы к появлению нового участника теста, и в этот момент у меня было два участника, пытающихся взаимодействовать с одним и тем же приложением, что привело к этой очень странной ошибке.
Чтобы доказать, что я сделал следующее:
Обходной путь должен был выйти и снова открыть симулятор, чтобы удостовериться, что все процессы были убиты. Надеюсь, что это решит ваши проблемы
источник
killall "Simulator" 2> /dev/null; xcrun simctl erase all
, или если вы используете fastlane, есть опции сканирования для сброса симулятора.Я использую разные машины. Мои старые Маки сталкиваются с этой ошибкой гораздо чаще. Я предполагаю, что старые Mac не имеют памяти, необходимой для правильной работы некоторых XCUITests.
источник
Время от времени я встречаюсь с этой проблемой в Xcode 11.1. Я заметил, что проблема возникает при ожидании элементов пользовательского интерфейса, особенно когда во время теста отображается веб-представление. Когда проблема произошла, я использовал
XCUIElement.waitForExistence(timeout:)
или ожидал сNSPredicate(format: "exists == true")
. Когда я перешел на ожидание,NSPredicate(format: "hittable == true")
проблема исчезла, но я не знаю почему. Разница между двумя атрибутами заключается в том, чтоhittable
обнаруживаются только элементы на экране, в то время какexists
обнаруживаются элементы вне экрана, такие как внеэкранные ячейки табличного представления.источник
У меня была похожая проблема на Xcode 11.
Оказалось, что раньше было разрешено иметь одинаковый идентификатор доступности на многих страницах.
Но теперь, используя новый стиль модального представления, вы должны использовать разные идентификаторы на своих страницах, чтобы избежать конфликтов.
источник