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 или нет, чтобы определить, является ли представление видимым.

У меня та же проблема, но я могу предложить обходной путь:

  1. указать разные accessibilityIdentifier для кнопки, когда она скрыта или видна, что-то вроде my_super_button_hiddenкогда он скрыт и my_super_button_visible иначе
  2. всегда использовать all ключевое слово в запросе кнопки
  3. проверить видимость, проверив accessibilityIdentifier
  4. изучить включенное состояние, как вы делали раньше

проверено на ruby ​​2.4.0, run_loop 2.3.1

Другие вопросы по тегам