1

我对 Calabash 完全陌生,花了一天时间学习(包括完成所有设置)。

我需要帮助的一件事是如何轻松找到 ID。所以我有一个 Android 应用程序,其中包含占位符文本用户名。

我尝试了以下方法,但它根本不起作用(我不断收到超时错误,我认为这是因为它无法找到):

When I enter "some@user.com" as "Username"

所以我的问题:

1-如果我想将该电子邮件输入到带有用户名的字段中,上述内容实际上是否正确 2-如果我没有像上面这样的占位符,我如何轻松获取参考或 ID 并将其用于 Then /^I enter "([^\"]*)" into input field number (\d+)$/

非常感谢。

4

1 回答 1

1

要查找定位器,您应该使用葫芦控制台。如果你运行
calabash-android console your_app.apk
then 一旦它开始
reinstall_apps
然后
start_test_server_in_background.

运行后,您可以使用葫芦查询语法来查找要与之交互的元素 - https://github.com/calabash/calabash-ios/wiki/05-Query-syntax

为了让您开始query("*"),将返回当前屏幕上的所有内容。

query("id:'UserNameField'")只会返回 ID 为 UserNameField 的元素。

要检查它是否是您真正想要的,您可以使用flash("id:'UserNameField'")它在您的模拟器/设备上闪烁几次。

然后与之交互,我建议不要使用预先编写的步骤。制定您自己的步骤定义,如果您还没有使用 calabash,请记住在需要使用的文件中添加

require 'calabash-android/operations'

When /^I enter the username (.*)$/ do |username|
  enter_text("id:'UserNameField'", username)
end

预先编写的步骤可能很有用,但它们最终会使您的场景难以阅读,并且一旦您使用它做了一些更复杂的事情,您可能无论如何都必须编写自己的步骤。

为了帮助您确定步骤定义的正确命令,运行命令会很有用,例如在 calabash 控制台中运行命令,例如 enter_text("id:'UserNameField'", 'username_you_want') 这样您就不必每次都运行测试你添加一行。

于 2015-06-25T16:39:13.893 回答