Calabash 使用葫芦进行更复杂的导航

Calabash 使用葫芦进行更复杂的导航,calabash,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 但是如何使用操作符呢?在我的应用程序中,用户通常登录到登录页面,但如果他真的登录了,则可以登录到主页。如果他是第一次跑步,也可以在教

我想我有点混淆了葫芦的真正用途

我找到了一些演示脚本,其中我读到:

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
而且没有具体的顺序。我在网上找到了很多教程,但是没有任何教程适用于可以有多个场景的应用程序的常规导航。我的理解是,一旦考试不及格,它就会停止。经常出现运行时错误,如“没有名为-x的按钮-因此我会崩溃”

一般来说,我想做一些事情,比如:

Ok, check where I am, and according to where I am in the app, reacts the good way.
葫芦的目的有什么我不明白的吗。我能用葫芦来完成这种测试吗


如果某些测试因为一次测试的结果而不再有效,如何取消这些测试?

您可以创建自己的步骤来帮助完成此操作,但葫芦没有“如果我在X页上”功能。RubyAPI有大量非常有用的函数,允许您创建非常有效的测试。RubyAPI的文档就在这里,我强烈建议您查看一下。如果您想确保您的测试总是以相同的方式运行,请为要测试的每个主要功能创建不同的“功能”。当葫芦运行时,它会在每项功能之前重新安装应用程序,因此您可以确保自己不会仍然登录到任何页面。您可以先编写一个简单的登录/注销功能,然后在下一个功能中,使用相同的步骤登录,然后导航到不同的功能。要真正熟悉葫芦,我建议使用葫芦控制台。这允许您通过命令行控制应用程序,对于学习所有不同命令的工作方式非常有帮助。希望这有点帮助,如果你有任何问题,请随时在评论中标记我,我每天都使用葫芦。

你可以创建自己的步骤来帮助我,但葫芦没有“如果我在X页上”功能。RubyAPI有大量非常有用的函数,允许您创建非常有效的测试。RubyAPI的文档就在这里,我强烈建议您查看一下。如果您想确保您的测试总是以相同的方式运行,请为要测试的每个主要功能创建不同的“功能”。当葫芦运行时,它会在每项功能之前重新安装应用程序,因此您可以确保自己不会仍然登录到任何页面。您可以先编写一个简单的登录/注销功能,然后在下一个功能中,使用相同的步骤登录,然后导航到不同的功能。要真正熟悉葫芦,我建议使用葫芦控制台。这允许您通过命令行控制应用程序,对于学习所有不同命令的工作方式非常有帮助。希望这有点帮助,如果您有任何问题,请随时在评论中给我贴上标签,我每天都使用葫芦。

我将在上查看葫芦-x-platform示例。它通过使用“页面对象”样式的框架来完成您所描述的内容。它是为使用多个框架而设计的,但我不明白为什么不能将它用于单个框架。我会写更多,但那只是复制他们那里的东西


祝你好运

我将在中查看葫芦-x-platform示例。它通过使用“页面对象”样式的框架来完成您所描述的内容。它是为使用多个框架而设计的,但我不明白为什么不能将它用于单个框架。我会写更多,但那只是复制他们那里的东西


祝你好运

解决方案是制定执行某些先决条件工作的步骤

因此,您的测试将如下所示:

Given I am on Sign In screen
Then ...

如果我在登录屏幕上

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?

举个例子。通常一个实现更为复杂。

解决方案是制定执行某些先决条件工作的步骤

因此,您的测试将如下所示:

Given I am on Sign In screen
Then ...

如果我在登录屏幕上

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?

举个例子。通常情况下,实现更为复杂。

“当Calabash运行时,它会在每个功能之前重新安装应用程序,因此您可以确保自己不会仍然登录到任何页面上。”这在iOS端并不完全正确。在模拟器和XTC上,您可以使用
RESET\u-BETWEEN\u-SCENARIOS
env变量来控制此行为。在iOS设备上,葫芦不会重新安装应用程序。我不确定葫芦Android上的行为是什么。我还担心不知道在哪里可以找到预定义的步骤,所以这个链接很有用。“当葫芦运行时,它会在每个功能之前重新安装应用程序,这样你就可以确保你不会仍然登录/在任何页面上。”这在iOS端并不完全正确。在模拟器和XTC上,您可以使用
RESET\u-BETWEEN\u-SCENARIOS
env变量来控制此行为。在iOS设备上,葫芦不会重新安装应用程序。我不确定葫芦Android上的行为是什么。我还担心不知道在哪里可以找到预定义的步骤,所以这个链接很有用。对于指向Ruby API文档的@22mainstream90,+1表示@22mainstream90,+1表示指向Ruby API文档的@22mainstream90。