Calabash Android:检查按钮是否存在并启用

时间:2014-03-05 18:40:39

标签: android automation automated-tests android-testing calabash

我是Calabash的新手,可悲的是,他没有编程经验,所以我希望人们对我有耐心并提供明确的答案。


在登录页面上,我已成功检查...

  • 电子邮件地址字段
  • 密码字段

但我似乎无法测试...的存在和启用状态。

  • 登录按钮
  • 隐藏按钮(隐藏或显示输入的密码)
  • 密码帮助和恢复按钮

使用query("*"),我可以获取所有ID,但我对要测试的实际查询命令感到困惑。

这是我迄今为止的测试:

Feature: Sign In appearance
Scenario: Upon launch, all elements of the login page should appear correctly
    Then I see "Email Address"
    Then I see "Password"
    Then I see "button marked:'Sign In'"

产生以下结果:

Then I see "button marked:'Sign In'"                              # calabash-android-0.4.20/lib/calabash-android/steps/assert_steps.rb:5
  Action 'assert_text' unsuccessful: Text'button marked:'Sign In'' was not found (RuntimeError)
  features/Login_appearance.feature:6:in `Then I see "button marked:'Sign In'"'
Failing Scenarios:
cucumber features/Login_appearance.feature:3

我该怎么办?

2 个答案:

答案 0 :(得分:2)

而不是尝试使用预定义的步骤创建自定义步骤并使用Ruby api的querywait_for_elements_exist方法。

首先看一下这篇文章,了解有关查询语言的更多信息: http://krazyrobot.com/2014/04/calabash-using-query/

然后可能通过id找到query的元素,例如:

  • 查询(" * id:' email_field'")
  • 查询(" * id:' pwd_field'")

在步骤定义中创建自定义步骤,并使用wait_for_elements_exist方法验证元素:

Then /^all the elements are present on the login screen$/ do
    wait_for_elements_exist(["* id:'email_field'", "* id:'pwd_field'"])
end

答案 1 :(得分:1)

您是否尝试过更换

Then I see "button marked:'Sign In'"

Then I see "Sign In"