Calabash - Android - 查找 ID 和处理占位符

Calabash - Android - Finding Ids and handling placeholders

我是 Calabash 的新手,花了一天时间学习(包括完成所有设置)。

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

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

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

所以我的问题:

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

非常感谢。

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

一旦它 运行ning 你可以使用葫芦查询语法来找到你想要与之交互的元素 - https://github.com/calabash/calabash-ios/wiki/05-Query-syntax.

为了让你开始 query("*") 将 return 当前屏幕上的所有内容。

query("id:'UserNameField'") 只会 return id 为 UserNameField 的元素。

要检查它是否是您真正想要的,您可以使用 flash("id:'UserNameField'") 使其在您的 emulator/device.

上闪烁几次

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

require 'calabash-android/operations'

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

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

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