Подтвердить что ты не робот

Тестирование, если элемент отображается с помощью XCode 7 UITest

Я хочу проверить, является ли элемент видимым или нет в зависимости от его свойства .hidden, но я не могу найти правильный способ сделать это, используя новый тестовый материал Xcode 7 UI.

Я пробовал с myelement.exists и myelement.hittable, но они не работают так, как я ожидал. Я полагаю, что они работают над соединением с свойством hidden. Скрытый элемент не должен существовать и не годится... но это не текущее поведение (я могу понять поведение exists... но скрытый элемент не должен быть hittable IMO).

Есть ли другой способ проверить значение "скрытого" свойства?

4b9b3361

Ответ 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