В настоящее время я использую NSPredicate для ожидания условий для элементов XCUITest следующим образом:
class func waitForCondition(condition: String, element: XCUIElement) -> Bool {
let predicate = NSPredicate(format: condition)
let expectation = XCTNSPredicateExpectation(predicate: predicate, object: element)
let result = XCTWaiter().wait(for: [expectation], timeout: 5)
return result == .completed
}
Он работает для большинства атрибутов, таких как «exists == 1», «isSelected == 1», «isHittable == 1» и т. д. Но мне нужен способ проверить фокус, и, похоже, не существует условие, которое подтвердило бы это.
Честно говоря, я не могу найти способ проверить фокус даже в автозаполнении Xcode. Я нашел документацию для XCUIElementAttributes, интерфейса, который принят классом XCUIElement: https://developer.apple.com/documentation/xctest/xcuielementattributes, и в нем говорится о существовании Bool «hasFocus». Но на самом деле кажется, что он не существует вне мира документации.
Я использую Xcode 9.4.1, для записи.