使用Calabash进行更复杂的导航

时间:2014-03-13 21:58:36

标签: calabash

我觉得我对卡拉巴什的真正目的有点混淆。

我在那里找到了一些演示脚本:

Then I see "Sign In"
Then I wait to see if I am on a good screen
Then I enter "my_username" into text field number 1
Then I touch list item number 2

但我如何使用运营商?在我的应用程序中,用户经常登陆登录页面,但如果他真的记录了,则可以登陆主页。或者在教程中,如果他第一次跑步。关于条款和条件,如果他从未确认新条款和条件,或在其他屏幕上,如果某些操作在缓存中。所以它需要大量的验证。

但我所发现的只是脚本然后,如果它找不到指定的项目就会中断。

我正在尝试建立一个如下所示的步骤:

If I am on terms and conditions, click Accept
If I am on login, click Sign In
If I am on tutorial, click Close

没有具体的订单。我在网上找到了很多教程,但没有什么适用于可以有多个场景的应用程序的正常导航。我的理解是,一旦测试没有通过,它就会停止。通常会出现类似&#34的运行时错误;没有名为-x的按钮,因此我会崩溃"

以更一般的方式,我想做的事情如下:

Ok, check where I am, and according to where I am in the app, reacts the good way.

有什么(事情)我不了解葫芦的目标。我可以用Calabash进行这种测试吗?

如果由于一次测试的结果它们不再有效,如何取消某些测试?

3 个答案:

答案 0 :(得分:2)

您可以创建自己的步骤来帮助解决此问题,但Calabash没有“如果我在X页面上”功能。 Ruby API有许多非常有用的功能,可以让您创建非常有效的测试。 Ruby API的文档位于here,我强烈建议您检查一下。如果您想确保测试始终以相同的方式运行,请为要测试的每个主要功能创建不同的“功能”。当Calabash运行时,它会在每个功能之前重新安装应用程序,因此您可以确保您仍然不会登录任何页面。您可以先编写一个简单的登录/注销功能,然后在下一个功能上,使用相同的步骤登录,然后导航到不同的功能。为了让Calabash感到非常舒服,我推荐使用calabash控制台。这允许您通过命令行控制应用程序,并且非常有助于学习所有不同命令的工作方式。希望这有点帮助,如果你有任何问题,请随时在评论中给我贴上标签,我每天都会使用Calabash。

答案 1 :(得分:2)

我会看一下https://github.com/calabash/x-platform-example处的calabash-x-platform示例。它通过使用“页面对象”样式框架来完成您正在描述的内容。它是为使用多个框架而制作的,但我不明白为什么你不能将它用于单个框架。我会写更多,但它只是复制他们在那里的东西。

祝你好运!

答案 2 :(得分:2)

解决方案是开发能够执行某些前提工作的步骤。

所以你的测试看起来像:

Given I am on Sign In screen
Then ...

Given I am on Sign In screen就像是

start_test_server_in_background
# additionally you may need some wait_for this line
touch 'accept_btn_locator' unless query('accept_btn_locator').empty?
touch 'sign_in_btn_locator' unless query('sign_in_btn_locator').empty?
touch 'close_btn_locator' unless query('close_btn_locator').empty?

仅举例来说。通常,实现更复杂。