Как проверить, доступен ли элемент

Приложение, для которого я разрабатываю тесты пользовательского интерфейса Xcode, имеет несколько кнопок возврата. Один из них можно нажимать, а другой - нет. Я попытался обернуть do / catch, но тест не удался, если какая-либо одна строка не удалась.

app.navigationBars.buttons ["Back"] имеет несколько совпадений, оба:

app.navigationBars.childrenMatchingType(.Button).elementBoundByIndex(0)

а также

app.navigationBars.childrenMatchingType(.Button).elementBoundByIndex(1)

Можно ли попробовать одно, а если нет - другое? Или проверьте, доступен ли элемент?

В зависимости от размера устройства (6+ и iPad по сравнению с устройствами меньшего размера) элемент кнопки «Назад» меняется.


person davegallant    schedule 15.12.2015    source источник


Ответы (1)


Основываясь на ответе @dasdom, в Swift вы можете сделать следующее:

let buttonQuery = app.navigationBars.element.childrenMatchingType(.Button)
var button = buttonQuery.elementBoundByIndex(0)
if (button.hittable == false) {
    button = buttonQuery.elementBoundByIndex(1)
}
button.tap()

Обратите внимание, что button не является обязательным, поэтому ? не требуется. Кроме того, перечисление не переводится напрямую, поэтому следует использовать .Button.

person Joe Masilotti    schedule 15.12.2015
comment
Я удалю свой ответ, так как ваш правильный вариант моего ответа. :) - person dasdom; 15.12.2015
comment
Не понимал, что это было так просто и организованно. Спасибо! - person davegallant; 15.12.2015
comment
можно ли добавить тег с элементами? Мне нужно перемещаться по всему экрану в стиле bfs / dfs. Итак, как мы можем отслеживать, какой элемент уже задействован? - person Sazzad Hissain Khan; 27.02.2017