Robotium: нажмите на текст только в alertDialog, а не в нижней части действия - PullRequest
7 голосов
/ 14 мая 2019

У меня есть действие, отображающее некоторый текст, например "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();

А вот мой тест Robotium:

solo.clickOnButton(...); // to open the dialog alert
solo.waitForDialogToOpen();
solo.clickOnText("someText");

Проблема в том, что Robotium находит текст в действии в диалоговом окне с предупреждением. Так как «someText» может быть где угодно в моей деятельности, я не могу использовать индекс.

Как я могу сузить поиск текста только до alertDialog? или же Как найти элемент просмотра в списке элементов в диалоговом окне предупреждения?

1 Ответ

3 голосов
/ 18 мая 2019

Должен быть возможен поиск текста вручную следующим образом:

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;
   }
}

Отказ от ответственности: Поскольку в настоящее время на моем компьютере не настроена среда Android, я не смог проверить это

...