MonkeyDevice getViewIdList() генерирует исключение NullPointerException

Проблема: MonkeyDevice getViewIdList() генерирует исключение NullPointerException

Как я получил ошибку:

# Retyped, not copied, excuse typos.
$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyDevice, MonkeyRunner
>>> device = MonkeyRunner.waitForConnection()
>>> device.getViewIdList()

Бросает java.lang.NullPointerException со следующей трассировкой:

at com.android.chimpchat.ChimpManager.parseResponseforExtra(ChimpManager.java:216)
at com.android.chimpchat.ChimpManager.listViewIds(ChimpManager.java:392)
at com.android.chimpchat.adb.AdbChimpDevice.getViewIdList(AdbChimpDevice.java:604)
at com.android.monkeyrunner.MonkeyDevice.getViewIdList(MonkeyDevice.java:383)
... # Reflection stuff ...

Вещи, которые я сделал, чтобы решить:

  • Обновлен SDK до последней версии (SDK Tools на 22.0.5, SDK Platform Tools на 18.0.1)
  • То же исключение на эмуляторах 4.2.2 и 4.3

У меня закончились идеи для тестирования, и поиск в Google ничего не дал. Есть идеи?

1 ответ

Решение

Это на самом деле происходит потому, что

device = MonkeyRunner.waitForConnection()

возвращает без ошибок или исключений, даже если соединение не было успешным.

Вы можете использовать ту же технику, что и AndroidViewClient/culebra, чтобы определить, было ли установлено соединение сразу после waitForConnection():

 try:
     device.wake()
 except java.lang.NullPointerException, e:
     print >> sys.stderr, "%s: ERROR: Couldn't connect to %s: %s" % (progname, serialno, e)
     sys.exit(3)
Другие вопросы по тегам