0

The codes in my python script are as below:

params = dict()

params['package']='com.pp.assistant.test'

device.instrument(r"com.pp.assistant.test/android.test.InstrumentationTestRunner",params)

But when I run the code:

C:\Users\Administrator>monkeyrunner E:\MyPython\MonkeyRunnerTest\test.py
150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] 

I get the following errors:

Error executing command: am instrument -w -r com.pp.assistant.test/android.test.InstrumentationTestRunner

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]com.android.ddmlib.ShellCommandUnresponsiveException

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:513)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:390)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:359)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.Device.executeShellCommand(Device.java:568)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.chimpchat.adb.AdbChimpDevice.shell(AdbChimpDevice.java:274)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.chimpchat.adb.AdbChimpDevice.shell(AdbChimpDevice.java:267)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.chimpchat.adb.AdbChimpDevice.shell(AdbChimpDevice.java:262)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.chimpchat.adb.AdbChimpDevice.instrument(AdbChimpDevice.java:503)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.monkeyrunner.MonkeyDevice.instrument(MonkeyDevice.java:358)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at java.lang.reflect.Method.invoke(Method.java:606) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyReflectedFunction.call(PyReflectedFunction.java:186) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyReflectedFunction.call(PyReflectedFunction.java:204) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyObject.call(PyObject.java:422) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyObject.call(PyObject.java:426) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyMethod.call(PyMethod.java:139) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.pycode._pyx0.f$0(E:\MyPython\MonkeyRunnerTest\test.py:65) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.pycode._pyx0.call_function(E:\MyPython\MonkeyRunnerTest\test.py) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyTableCode.call(PyTableCode.java:165) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.PyCode.call(PyCode.java:18) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.Py.runCode(Py.java:1275) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.core.builtin.execfile_flags(builtin.java:522) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:225) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77) 150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189) 150708 12:14:18.692:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 150708 12:14:18.692:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]Traceback (most recent call last): File "E:\MyPython\MonkeyRunnerTest\test.py", line 64, in device.instrument("com.pp.assistant.test/android.test.InstrumentationTestRunner",params) at java.util.regex.Matcher.getTextLength(Matcher.java:1234) at java.util.regex.Matcher.reset(Matcher.java:308) at java.util.regex.Matcher.(Matcher.java:228) at java.util.regex.Pattern.matcher(Pattern.java:1088) at com.android.chimpchat.adb.AdbChimpDevice.convertInstrumentResult(AdbChimpDevice.java:517) at com.android.chimpchat.adb.AdbChimpDevice.instrument(AdbChimpDevice.java:504) at com.android.monkeyrunner.MonkeyDevice.instrument(MonkeyDevice.java:358) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606)

java.lang.NullPointerException: java.lang.NullPointerException

Andris Leduskrasts
  • 1,210
  • 7
  • 16

1 Answers1

0

You can use AndroidViewClient/culebra instead.

This script will help you run the instrumentations for different packages and even list them.

#! /usr/bin/python

import sys
import os

try:
    sys.path.insert(0, os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.viewclient import ViewClient

PLI = 'pm list instrumentation'
prog = os.path.basename(sys.argv[0])

def usage():
   print >>sys.stderr, \
       "usage: %s [-s|--serialno serialno] {target-package-name | LIST}" % prog
   sys.exit(1)

def main():
   serialno = '.*'
   if len(sys.argv) < 2:
      usage()
   if sys.argv[1] in ['-s', '--serialno']:
      sys.argv.pop(1)
      serialno = sys.argv.pop(1)
   elif sys.argv[1].startswith('-'):
      usage

   if len(sys.argv) != 2:
      usage()

   pkg = sys.argv[1]

   kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False, 'timeout': 500}
   device, serialno = ViewClient.connectToDeviceOrExit(serialno=serialno, **kwargs1)

   isList = (pkg.upper() == 'LIST')
   if not isList:
      print "running instrumentation for %s on %s" % (pkg, serialno)
   for (i, t) in map(lambda l: l.split(), device.shell(PLI).splitlines()):
      ptr = i.split(':')[1]
      if isList:
         print ptr, t
      elif t == '(target=%s)' % pkg:
         print device.shell('am instrument -w %s' % ptr)
         return

   if not isList:
      print >>sys.stderr, "ERROR: instrumentation for %s not found" % pkg


if __name__ == '__main__':
    main() 
Diego Torres Milano
  • 65,697
  • 9
  • 111
  • 134