Calabash iOS: запрос не отображает отключенную кнопку
Я пытаюсь проверить существование UIButton, который изначально отключен continueButton.isEnabled = false
,
Когда я проверяю дерево в calabash-ios console
Я получаю следующий результат
[UIWindow]
[UIView]
[UIView]
[MyProject.GradientView]
[UIImageView] [id:logo-1] [label:Logo 1]
[UIImageView] [id:logo-2] [label:Logo 2]
[MyProject.UnderlinedTextField] [label:Email] [text:]
[UITextFieldLabel] [label:EMAIL] [text:EMAIL]
[UIAccessibilityTextFieldElement] [label:Email] [text:EMAIL]
[UIButton] [label:Let's go]
[UIButtonLabel] [label:LET'S GO] [text:LET'S GO]
true
Тем не менее, когда я пытаюсь использовать query("button")
Я получаю пустой массив. Если кнопка включена и использовать запрос снова, результат:
[
[0] {
"id" => nil,
"description" => "<UIButton: 0x7fcdc8f1b6b0; frame = (23 571; 329 63); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x608000228b20>>",
"label" => "Let's go",
"frame" => {
"y" => 571,
"x" => 23,
"width" => 329,
"height" => 63
},
"accessibilityElement" => true,
"value" => nil,
"alpha" => 1,
"enabled" => true,
"visible" => 1,
"selected" => false,
"class" => "UIButton",
"rect" => {
"y" => 571,
"center_x" => 187.5,
"center_y" => 602.5,
"x" => 23,
"width" => 329,
"height" => 63
}
}
]
Почему отключенная кнопка не отображается при использовании запроса? Есть ли способ проверить, существует ли кнопка независимо от ее состояния включения?
ОБНОВИТЬ
Когда используешь query ("all button")
как предположил jmoody, я могу получить кнопку в списке.
[
[0] {
"id" => nil,
"description" => "<UIButton: 0x7fe05ad18000; frame = (23 571; 329 63); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x60000022d940>>",
"label" => "Lets go",
"frame" => {
"y" => 571,
"x" => 23,
"width" => 329,
"height" => 63
},
"accessibilityElement" => true,
"value" => nil,
"alpha" => 1,
"enabled" => false,
"visible" => 0,
"selected" => false,
"class" => "UIButton",
"rect" => {
"y" => 571,
"center_x" => 187.5,
"center_y" => 602.5,
"x" => 23,
"width" => 329,
"height" => 63
}
}
]
2 ответа
Когда кнопка отключена, она физически видна?
# All buttons regardless of visibility.
query("all button")
# Ask every button if is enabled.
query("all button", :isEnabled)
# Filter buttons by disabled
query("all button isEnabled:0")
Почему отключенная кнопка не отображается при использовании запроса?
Calabash использует эвристику видимости, чтобы определить, виден ли вид.
На первый взгляд, похоже, что Calabash ничего не спрашивает о том, включен ли UIControl или нет, чтобы определить, является ли представление видимым.
У меня та же проблема, но я могу предложить обходной путь:
- указать разные
accessibilityIdentifier
для кнопки, когда она скрыта или видна, что-то вродеmy_super_button_hidden
когда он скрыт иmy_super_button_visible
иначе - всегда использовать
all
ключевое слово в запросе кнопки - проверить видимость, проверив
accessibilityIdentifier
- изучить включенное состояние, как вы делали раньше
проверено на ruby 2.4.0, run_loop 2.3.1