2015-02-13 5 views
0

У меня есть два разных (или не -.-) UiObjects, и я хочу их сравнить.Как сравнить UiObject в Ui Automator

Я вижу, что они одного класса и такого рода вещи, но этого недостаточно.

Я думал об использовании идентификатора ресурса, но я не могу найти способ получить к нему доступ (я хочу сделать это во время выполнения, поэтому просмотрщик автозапуска ui не поможет ...).

Так что я на самом деле просят две вещи:

  1. Как я должен сравнить два UiObjects (если не 100% положительных, рядом с ним)?
  2. Есть ли способ получить доступ к идентификатору ресурса?

Заранее спасибо.

EDIT: Моя идея заключается в следующем:

  • открыть приложение
  • определить его расположение и виджеты
  • обнаружить, что взаимодействия с-плюсом с различными виджетами
  • выбрать виджет и взаимодействовать с ним
  • проверить, если его новый экран или изменения в виджетах

В настоящее время я могу получить доступ к корню дерева компоновки и, таким образом, его дети (как UiObjects) путем выбора первого экземпляра FrameLayout (верно для каждого экрана)

Пример кода:

//I get the first object of the current layout screen by 
UiObject obj = new UiObject(new UiSelector().className("android.widget.FrameLayout").instance(0)); 
/* 
    code to get rest of the tree ... 
*/ 
/* 
    code interact with a button 
*/ 
// now I want to see if the screen changed (completely new or if a new widget appeared) or if its the same 
// for that I need to know if the objects are the same 
// To compare objects I need their id 

причина я не написал код, потому что я не думаю, что это действительно добавляет много ... как немного, что важно, так это один я не знаю, как сделать

ответ

0

Ну, я понял, это много:

  • При использовании интерфейса Automator не связанных с любым Приложением, и поэтому невозможно получить представления приложения
  • Невозможно получить доступ к идентификатору представления, соответствующему объекту Ui (по той же причине, что и раньше).
  • Сравнение должно быть выполнено с помощью эвристики, не будучи на 100% положительным.

Таким образом, то, что я хотел, действительно невозможно.

-1

Посмотреть класс имеет метод «getId», вы можете использовать его для сравнения видов. Например, если ваш класс реализует OnClickListener, то вы можете проверить, какой вид вызвавший событие так:

public void onClick (View view) { 
    switch(view.getId()) { 
     case R.id.my_button_1: 
      // What to do for button 1. 
      break; 
     case R.id.my_button_2: 
      // What to do for button 2. 
      break; 
     default: 
      // Unknown view 
    } 
} 
+0

Для доступа к просмотру необходимо пройти через слушателя? То, что я делаю, имеет сходство с обезьяной, и я хотел быть в состоянии прочитать экран и все такое. –

+0

Конечно, нет, это просто пример.Но я не знаю, как вы захватываете объекты. Вставьте свой код, если вам нужна дополнительная помощь. –

+0

Я отредактировал свое начальное сообщение, чтобы лучше объяснить мою цель. –

 Смежные вопросы

  • Нет связанных вопросов^_^