葫芦测试系统对话框显示&与之互动

时间:2016-07-22 20:47:19

标签: android ruby calabash calabash-android

我的Android应用程序项目以编程方式启动系统对话框以安装可信CA证书:

Intent intent = KeyChain.createInstallIntent();
intent.putExtra(KeyChain.EXTRA_PKCS12, certificate);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

此代码弹出系统对话框,如下所示: enter image description here

以上是我的Android应用程序项目。现在,关于测试:

我正在使用Calabash为我的项目编写自动验收测试。

我知道Calabash提供pre-defined step definitions。但这些步骤提供了与app的UI组件交互的关键字(例如输入文本,按下按钮)。我无法找到如何使用这些预定义的步骤来测试系统对话框是否正在显示。

我的问题:

Q1。如何使用Calabash预定义步骤定义来检查系统对话框是否显示?如何在对话框中输入文字?

Q2。如果回答 Q1 是“这是不可能的”,那么,我该如何使用Calabash进行测试呢?看起来我需要编写自己的Ruby函数     测试一下吗?如果是这样,如何编写Ruby函数来测试这个系统对话框正在显示&如何与Calabash测试中的系统对话框进行交互?

1 个答案:

答案 0 :(得分:0)

您需要为此编写代码。假设这是一个默认的警告对话框:

如果AlertDialog类型的视图可见,则会断言。

def check_if_dialog_open
   check_element_exists('*AlertDialog')
end

如果在以后找到并隐藏键盘,则会向第一个EditText输入一些文本。

def input_into_dialog(some_text)
    enter_text("android.widget.EditText *", some_text)
    hide_soft_keyboard
end

然后您可以为此编写自己的步骤:

Then(/^I check if my dialog is open and input some text$/) do
  check_if_dialog_open

  input_into_dialog('my text')

  sleep(STEP_PAUSE)
end

要在该对话框中输入,您可以查询可见的EditText。

这只是改进查询的问题。您可以使用calabash console确认这是否是默认的Android的AlertDialog。

详细了解控制台和查询语法here,并查看有关Ruby API go here的更多信息。