Невозможно установить элемент на модальном уровне выше viewController с тем же элементом - PullRequest
0 голосов
/ 25 октября 2019

Существует viewController с небольшим текстом HITTABLE "exampleText". Когда вы нажимаете на него, открывается модальное окно с тем же «exampleText» (или даже двумя ячейками с одинаковыми staticTexts «exampleText»). Моя цель - подсчитать эти «exampleTexts» через countHittableElements

Но проблема в том, что мой методвыполняет ли поиск элементов как на модальном, так и на viewController (который находится под этим модальным) Так что, если есть 2 "exampleTexts" на модальном и пытаюсь использовать countHittableElements (name: "exampleTexts"), я всегда получаю дополнительный 1 элемент и мой счеттерпит неудачу.

func countHittableElements(name: String) -> Int {
    return filterHittableElements(name: name).count
}

func getElements(name: String) -> XCUIElementQuery {
    let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
    return application.cells.staticTexts.containing(predicate)
}

func filterHittableElements(name: String) -> [XCUIElement] {
    let all = getElements(name: name).allElementsBoundByAccessibilityElement
    let onlyfilt = all.filter { $0.isHittable }
    return onlyfilt
}

Есть ли способ каким-то образом игнорировать содержимое viewController, когда над ним открывается модальное окно?

1 Ответ

0 голосов
/ 27 октября 2019

Если у вас есть доступ к коду тестируемого приложения, вы можете попытаться подсчитать эти элементы в конкретной таблице, например, так (первая таблица в дереве):

func getElements(name: String) -> XCUIElementQuery {
    let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
    return application.tables.element(boundBy: 0).cells.staticTexts.containing(predicate)
}

или

func getElements(name: String) -> XCUIElementQuery {
    let predicate = NSPredicate(format: "label CONTAINS[c] %@", name)
    return application.tables[<table identifier goes here>]cells.staticTexts.containing(predicate)
}

Вы можете проверить древовидную структуру пользовательского интерфейса, поместив точку останова в тесте, а затем набрав в консоли XCode:

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