第二步的calabash-android undefined方法

时间:2015-06-18 11:58:02

标签: android cucumber calabash

我是calabash的新手,我正在尝试运行测试,并且calabash识别我的第一步并且它通过了,但是对于第二步我得到了一个未定义的方法错误,

我的专题文件是:

Feature: Sign-in page
Scenario: Go to dashboard with skip login
Given I am on the Login Screen
When I touch the “Skip Login” button
Then I should see the Main Screen

我的rb文件是

Given(/^I am on the Login Screen$/) do
  element_exists("button marked:'authenticate'")
  end

When(/^I touch the "Skip Login" button$/) do
  tap_mark 'skip_login'
end

Then(/^I should see the Main Screen$/) do
  wait_for_elements_exist("label text: 'HeaderText'")
end

当它到达“何时”步骤时,应用程序将在我的手机上关闭。 有人可以帮帮我吗?

输出结果为:

Given I am on the Login Screen          # features/step_definitions/calabash

_steps.rb:1     当我触摸“跳过登录”按钮时,#features \ my_first.feature:4     然后我应该看到主屏幕#features / step_definitions / calabash _steps.rb:9

1个场景(1个未定义) 3个步骤(1个跳过,1个未定义,1个通过) 0m22.691s

您可以使用以下代码段实现未定义步骤的步骤定义:

当(/ ^我触摸“跳过登录”按钮$ /)时   pending#用您希望的代码表达上面的正则表达式 端

还有一个细节,如果我采取第二步并将其移动而不是第一步,它将按下按钮。我无法理解为什么会发生这种情况,以及为什么它不会执行第二步

3 个答案:

答案 0 :(得分:1)

首先,请参阅logcat以获取应用崩溃原因的详细信息。

我认为你正在运行一个非常旧版本的Calabash-Android。在较新的版本中,无效查询应该永远不会崩溃应用程序。 wait_for_elements_exist("label text: 'HeaderText'")会在旧版本的Calabash-Android中崩溃应用,因为text:之后的空格无效。

较新版本的Calabash-Android会引发Ruby错误,告诉您错误的查询。

答案 1 :(得分:1)

对我来说,它看起来像一个“智能引号”问题:

When I touch the “Skip Login” button

这些不是常规双引号"

由于您未在步骤定义中使用正则表达式,我建议您:

Given I am on the Login Screen
When I touch the Skip Login button
Then I should see the Main Screen

When(/^I touch the Skip Login button$/) do
  tap_mark 'skip_login'
end

答案 2 :(得分:0)

您的测试结果会很好。但除此之外,你已经放了

tap_mark 'skip_login'

因此它会尝试查找具有该确切文本的文本。但根据你的功能文件,我猜你在按钮上实际拥有的是

  

跳过登录

所以tap_mark命令失败。

这只是一个猜测,但是" skip_login"按钮的ID?如果您想使用它来决定点击什么,请执行

之类的操作
touch "button id:'skip_login'"