【问题标题】:Calabash Android: Check if a button is present and enabledCalabash Android:检查按钮是否存在并启用
【发布时间】:2014-04-08 00:32:09
【问题描述】:

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

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    • query("* id:'email_field'")
    • query("* 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
    

    【讨论】:

    • 是的,我可以成功等待这些元素。 Calabash 也确认该按钮存在,但我如何检查该按钮是否已启用?
    • 也就是说,我的意思是,我如何检查按钮是否可点击,是否正在监听输入?
    【解决方案2】:

    您是否尝试过替换

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

    Then I see "Sign In"
    

    ?

    【讨论】:

    • Calabash 在我们的应用程序中看不到按钮的文本标签。所以,最终,当我对 Calabash 的了解足够深入时,我使用了按钮的 view_id,它起作用了。
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 2016-08-13
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多