calabash-android 第二步的未定义方法

calabash-android undefined method for second step

我是 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

当它到达 "When" 步骤时,应用程序在我的 phone 上关闭。 有人可以帮我解决这个问题吗?

输出为:

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

_steps.rb:1 当我触摸 "Skip Login" 按钮时 # features\my_first.feature:4 然后我应该看到主屏幕 # features/step_definitions/calabash _steps.rb:9

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

您可以使用这些代码段为未定义的步骤实施步骤定义:

当(/^我触摸"Skip Login"按钮$/)时 pending # 用你希望的代码表达上面的正则表达式 结束

更详细一点,如果我走第二步而不是第一步,它会按button.I无法理解为什么会这样,为什么不做第二步

首先,请参阅 logcat 了解应用程序崩溃的详细信息。

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

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

你的测试输出会很好。但除此之外,您还输入了

tap_mark 'skip_login'

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

Skip Login

因此 tap_mark 命令失败。

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

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

对我来说这似乎是一个 "smart quotes" 问题:

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