Robotium:仅在alertDialog中单击文本,而不在下面的活动中单击

Lau*_* D. 7 android robotium

我有一个显示一些文本的活动,例如“ someText”。

通过此活动,我打开一个警告对话框,如下所示:

AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Title");
String[] items = {"Hello", "World", "someText"};
builder.setItems(items, new MultiChoiceEventOnClickListener(...);
builder.setCancelable(true);
builder.show();
Run Code Online (Sandbox Code Playgroud)

这是我的Robotium测试:

solo.clickOnButton(...); // to open the dialog alert
solo.waitForDialogToOpen();
solo.clickOnText("someText");
Run Code Online (Sandbox Code Playgroud)

问题是Robotium在警报对话框下的活动中找到文本。由于“ someText”可以在我的活动中的任何位置,因此无法使用索引。

如何缩小文本搜索范围alertDialog?或如何在警报对话框的项目列表中找到查看项目?

fri*_*day 3

应该可以像这样手动搜索文本:

ArrayList<View> views = solo.getCurrentViews();
for(View v : views) {
   if (!v instanceof TextView) {
      //filter out everything thats not a TextView
      continue;
   }

   String text = ((TextView)v).getText().toString();
   if (text.contains("sometext") {
      //We found the view, click and then exit the loop. 
      solo.clickOnView(v);
      break;
   }
}
Run Code Online (Sandbox Code Playgroud)

免责声明:由于我的机器上目前没有设置 Android 环境,因此无法验证它