我是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#用您希望的代码表达上面的正则表达式 端
还有一个细节,如果我采取第二步并将其移动而不是第一步,它将按下按钮。我无法理解为什么会发生这种情况,以及为什么它不会执行第二步
答案 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'"