使用 Calabash 按下 Android 搜索按钮

Push on Android search button with Calabash

我遇到了这个问题:我正在测试一个 Android 应用程序,该应用程序使用嵌入在编辑文本中的搜索框,因此它不是典型的 "search" 控制器,而是键盘中的搜索按钮出现。我正在使用 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"    

执行return这个错误:

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"'

通过步骤 "Then I press "search"" 它将搜索具有该标签的 UI 元素。但这不包括键盘。

有2个选项

  1. 类似

    然后/^我按下回车键$/

  2. 或者类似这样的东西

    keyboard_enter_keyevent('KEYCODE_ENTER')

(这是从Krazy Robot复制的)

您应该使用方法press_user_action_button来按下出现在键盘上的'search'按钮。按回车键 (press_enter_key) 不是用户会做的,除非设备有 物理 键盘。您可以详细了解 Android 如何处理特殊键盘 'enter keys'(用户操作按钮)here

我复制问题的修复。

我在我的场景中创建了一个新的步骤定义

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

并且在 features/step_definitions/calabash_steps.rb

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

而且有效