Нажмите на кнопку поиска Android с Calabash

У меня такая проблема: я тестирую приложение для Android, которое использует поле поиска, встроенное в текст редактирования, поэтому это не обычный контроллер поиска, но на клавиатуре появляется кнопка поиска. Я использую Calabash для написания тестов.

Это тест:

Scenario: Iniciar la aplicación y realizar búsquedas
 And I wait for "Música" to appear
 Then I press view with id "menu_search"
 Then I enter text "Judas Priest" into field with id "collapsibleEditText"
 Then I press "search"    

Выполнение возвращает эту ошибку:

And I wait for "Música" to appear
Then I press view with id "menu_search"
Then I enter text "Judas Priest" into field with id "collapsibleEditText"
Then I press "search" 
  Timeout waiting for elements: * marked:'search' (Calabash::Android::WaitHelpers::WaitError)
  features/test.feature:11:in `Then I press "search"'

3 ответа

Решение

Вы должны использовать метод press_user_action_button нажать кнопку "Поиск", появляющуюся на клавиатуре. Нажав клавишу ввода (press_enter_key) - это не то, что должен делать пользователь, если на устройстве нет физической клавиатуры. Вы можете узнать больше о том, как Android обрабатывает специальную клавиатуру "клавиши ввода" (кнопки действий пользователя) здесь.

С шагом "Затем я нажимаю" поиск "" он будет искать элементы пользовательского интерфейса с этой меткой. Но это не включает в себя клавиатуру.

Есть 2 варианта

  1. Что-то вроде

    Затем /^ Я нажимаю кнопку ввода $/

  2. Или как то так

    keyboard_enter_keyevent ('KEYCODE_ENTER')

(Это скопировано с Крейзи Робот)

Я копирую исправление к проблеме.

Я создал новое определение шага в моем сценарии

Scenario
    .... nothing changed from the question above
    Then I press search button

И в функциях /step_definitions/calabash_steps.rb

Then /^I press search button$/ do
  press_enter_button
end

И это работает

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