Работая на iOS 13 с использованием последних версий Xcode 11, я не могу найти способ различать заголовки и статический текст в тестах пользовательского интерфейса XCTest.
Если я использую Xcode 11, но работаю на iOS 12, я все еще могу найти представления с чертой .header
путем фильтрации по типам элементов .other
с помощью XCTest, но в iOS 13 представления с чертой .header
теперь просто идентифицируются по типу элемента .staticText
с XCTest, даже если вы не установили признак доступности .staticText
в приложении.
Это создает для нас проблему, потому что мы используем это, чтобы убедиться, что мы не забываем правильно установить признаки заголовка для представлений для доступности, а также чтобы иметь возможность убедиться, что мы смотрим на правильный экран в тестах.
По общему признанию, возможность находить заголовки только по .other
не очень хороша, но, по крайней мере, это был способ отличить заголовки от обычного текста.
Вот пример кода для объяснения:
// ViewController.swift
headerLabel.isAccessibilityElement = true // headerLabel is just a UILabel IBOutlet
headerLabel.accessibilityTraits = [.header]
headerLabel.text = "My Header"
// ViewControllerTests.swift
XCTAssertTrue(XCUIApplication().otherElements["My Header"].firstMatch.waitForExistence(timeout: 30)) // This fails on iOS 13 but works on iOS 12 :(
XCTAssertTrue(XCUIApplication().staticTexts["My Header"].firstMatch.waitForExistence(timeout: 30)) // This fails on iOS 12 but works on iOS 13...
Если вы po XCUIApplication()
в Xcode, вы можете увидеть, что в iOS 13 заголовок теперь просто staticText
такой же, как и любая другая метка.
Я пробовал комбинировать разные свойства доступности (поскольку их может быть несколько), например:
headerLabel.accessibilityTraits = [.header, .staticText]
Но это не помогает.
.other
... - person Kane Cheshire   schedule 06.11.2019