Тестирование, если элемент отображается с помощью XCode 7 UITest
Я хочу проверить, является ли элемент видимым или нет в зависимости от его свойства .hidden
, но я не могу найти правильный способ сделать это, используя новый тестовый материал Xcode 7 UI.
Я пробовал с myelement.exists
и myelement.hittable
, но они не работают так, как я ожидал. Я полагаю, что они работают над соединением с свойством hidden
. Скрытый элемент не должен существовать и не годится... но это не текущее поведение (я могу понять поведение exists
... но скрытый элемент не должен быть hittable IMO).
Есть ли другой способ проверить значение "скрытого" свойства?
Ответы
Ответ 1
Как и в Xcode 7.1 Beta 3, тестирование пользовательского интерфейса в настоящее время не подтверждает проверку видимости элемента. Я предлагаю подать радар, чтобы обратить внимание на Apple.
Xcode 7.1 исправил эту проблему. hittable
теперь проверяет, правильный ли элемент.
Ответ 2
1) Я тестирую пользовательский интерфейс с быстрым в Xcode 7.3, и я использую как .hittable, так и .exists для проверки того, скрыта ли метка или нет, и они оба работают. Я проверяю "true" и "false", чтобы убедиться, что в любом случае это согласуется с результатом.
У меня есть метка, статический текст которой - это "Информация о дорожке", и ее следует скрывать, когда приложение загружается первым, а затем я нажимаю кнопку, чтобы показать метку, и вот результат после показа этикетки.
//тест завершается неудачно
let trackInfoLabel = app.staticTexts["Track info"]
XCTAssertEqual(trackInfoLabel.exists, true)
XCTAssertEqual(trackInfoLabel.hittable, true)
//тестовые проходы
XCTAssertEqual(trackInfoLabel.exists, false)
XCTAssertEqual(trackInfoLabel.hittable, false)
//тестовые проходы
let trackInfoLabel = app.staticTexts["Track info"]
XCTAssertEqual(trackInfoLabel.exists, true)
XCTAssertEqual(trackInfoLabel.hittable, true)
//тест завершается неудачно
XCTAssertEqual(trackInfoLabel.exists, false)
XCTAssertEqual(trackInfoLabel.hittable, false)
Leter on, когда я нажимаю кнопку, чтобы скрыть метку, все результаты повернулись противоположно. Это подтверждает, что оба свойства (hittable и exists) работают для установки label.hidden.
2) Еще один способ узнать, скрыт ли элемент, вы можете сделать это: element.frame.size.width == 0 || element.frame.size.height == 0
Ответ 3
XCUIElement.hittable работает для меня (в моем конкретном тестовом примере, где я проверяю несколько элементов UIButton для видимости) - совершенно уверен, что это не правильный способ сделать это, хотя
Ответ 4
Следующий код работал у меня.
В конце теста вы можете использовать следующий код:
while ([app.staticTexts matchingIdentifier:@"accesibilityId"].count > 0) {
sleep(1);
}
Ответ 5
Я согласен, что hittable не всегда работает для кнопок (Swift 2.0, XCode 7.2)
Я только что обнаружил, что если кнопка видна, вы можете найти ее ТОЛЬКО среди кнопок, а если кнопка скрыта, вы можете найти ее и в staticTexts!
XCTAssertFalse(app.buttons["Log out"].exists && app.staticTexts["Log out"].exists) // This button is visible (hidden = false)
XCTAssert(app.buttons["Log in"].exists && app.staticTexts["Log in"].exists) // This one is hidden
Хакки, но работает для кнопок. Apple должна просто ввести .hidden
или .visible
вдоль .hittable
и .exists