2015-02-24 116 views
1

我有这个问题:我正在测试一个Android应用程序,它使用嵌入编辑文本中的搜索框,因此它不是一个典型的“搜索”控制器,而是在键盘上显示搜索按钮。我使用葫芦来编写测试。用葫芦按下Android搜索按钮

这是测试:

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

回答

4

您应该使用方法press_user_action_button来按下键盘上出现的“搜索”按钮。按回车键(press_enter_key)不是用户可以做的事情,除非设备有一个物理键盘。您可以阅读关于Android如何处理特殊键盘“输入键”(用户操作按钮)here的更多信息。

+0

感谢您的帮助。这是解决问题的方法。 方案 ....没有从上面 的问题改变了然后我按搜索按钮 而在功能/ step_definitions/calabash_steps.rb 然后/ ^我按下搜索按钮$ /做 press_enter_button 结束 – JDaRiva 2015-02-24 13:05:33

0

随着一步“然后我按‘搜索’”它会搜索带有该标签的UI元素。但那不包括键盘。

有2个选项

  1. 喜欢的东西

    然后/^I并按回车键$/

  2. 或者这样

    keyboard_enter_keyevent东西( 'KEYCODE_ENTER')

(这是从Krazy Robot复制的)

-2

我将修复程序复制到问题中。

我已经在我的诗情

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 

创建一个新的台阶定义,它的工作原理

+0

的Tobias R的回答是正确的。正如他所提到的,你不应该叫press_enter_button。 – jmoody 2015-02-24 15:41:31

+0

但它的工作 – JDaRiva 2015-02-25 11:52:58

+0

它可能工作,但它是不正确的。我们,Calabash Android和Calabash iOS的维护人员告诉你:这不是正确的方法。 – jmoody 2015-02-25 13:39:23