Grey Matcher для получения текста из нескольких элементов соответствует одному и тому же серому Matcher - PullRequest
0 голосов
/ 21 сентября 2019

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

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете получить текст элемента, используя следующую функцию

open class GreyElement {
    var text = ""
}

func grey_getText(_ elementCopy: GreyElement) -> GREYActionBlock {
    return GREYActionBlock.action(withName: "get text",
                              constraints: grey_respondsToSelector(#selector(getter: UILabel.text))) { element,
                                errorOrNil -> Bool in
                                let elementObject = element as? NSObject
                                let text = elementObject?.perform(#selector(getter: UILabel.text),
                                                                  with: nil)?.takeRetainedValue() as? String
                                elementCopy.text = text ?? ""
                                return true
    }
}

И затем в своем тестовом коде:

var label = GreyElement()

for i in 0..<100 {
    EarlGrey.selectElement(...).perform(grey_getText(text))
    XCTAssert(label.count > 10)
}

Версия XCTest:

for element in app.staticText[...].allElementsBoundByIndex {
    XCTAssert(element.label.count > 10)
}
...