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)