Доступ к кнопкам на UIActivityViewController в тесте пользовательского интерфейса iOS 13 вызывает сбой - PullRequest
6 голосов
/ 01 октября 2019

Кто-нибудь еще испытывает проблемы с запуском тестов пользовательского интерфейса Xcode с Xcode 11, нацеленного на симулятор iOS 13 или устройство, где поиск кнопок на UIActivityViewController вызывает сбой?

У меня есть несколько тестов пользовательского интерфейса, которые проверяют кнопки, которыепоявляются в UIActivityViewController. Они выполняют ожидаемую настройку и затем ищут кнопку с чем-то вроде:

XCTAssertTrue(app.buttons["Copy"].exists)

. Тесты нормально работают на iOS 10, 11 и 12. Если я пытаюсь запустить тот же тест на iOS 13симулятор или устройство, в тот момент, когда код пытается получить доступ к кнопкам app.buttons, выполнение останавливается, и я получаю Thread 1: signal SIGABRT, а затем Failed to get matching snapshots: Lost connection to the application (pid 33047). в строке, где я пытаюсь получить доступ к app.buttons.

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

Если я отлаживаю тест и устанавливаю точку останова до того, как тест обращается к app.buttons, и я пытаюсь распечатать его содержимое, я получаю другое сообщение об ошибке.

po app.buttons
    t =    49.37s Requesting snapshot of accessibility hierarchy for app with pid 37576
expression produced error: error: /var/folders/f2/zhwz28mn1hd815pc78kg02q80000gp/T/expr5-3b2971..swift:1:72: error: 'XCUIElementQuery' is not a member type of 'XCTest'
Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<XCTest.XCUIElementQuery>(bitPattern: 0x10c73f4d0)!.pointee)

Thisконечно, похоже на ошибку Xcode. Кто-нибудь еще сталкивался с этим?

Вот немного кода, если кто-то хочет попробовать это.

Из контроллера представления:

@IBAction func showPressed(_ sender: Any) {
    let text = "I have something to share."

    let vc = UIActivityViewController(activityItems: [text], applicationActivities: nil)
    vc.popoverPresentationController?.sourceView = self.view

    self.present(vc, animated: true, completion: nil)
}

Тест пользовательского интерфейса:

func testActivityViewController() {
    let app = XCUIApplication()
    app.launch()

    app.buttons["Show AVC"].tap()

    let buttons = app.buttons
    let copy = buttons["Copy"]
    sleep(2) // Just keeping things simple for the example.

    XCTAssertTrue(copy.exists)
}

1 Ответ

2 голосов
/ 12 октября 2019

Я наблюдаю такое поведение и с Xcode 11, и я думаю, что ваше предположение, что это ошибка Xcode, является правильным.

Сбой , по-видимому, исправлен в бета-версии Xcode версии 11.22 (11B44), но запрос кнопок в UIActivityViewController все еще не работает. (Я никогда не вижу разрешения элемента.) Надеюсь, Apple исправит поиск элементов в ближайшем будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...