簡體   English   中英

如何在python腳本中使用MonkeyDevice的儀器方法

[英]How to use instrument method of MonkeyDevice in python script

我的python腳本中的代碼如下:

params = dict()

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

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

但是當我運行代碼時:

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

我收到以下錯誤:

執行命令時出錯: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.ShellCommandUnsensitiveException

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

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

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

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

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

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

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

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

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

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)

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

150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]在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] org.python.core.PyReflectedFunction上的[com.android.chimpchat.adb.AdbChimpDevice]。 org.python.core.PyReflectedFunction上致電 (PyReflectedFunction.java:186)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]。 org.python.core.PyObject上致電 (PyReflectedFunction.java:204)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]。 org.python.core.PyObject上致電 (PyObject.java:422)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]。 org.python.core.PyMethod上調用 (PyObject.java:426)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]。 在org.python.pycode._pyx0.f $ 0(E:\\ MyPython \\ MonkeyRunnerTest \\ test)中致電 (PyMethod.java:139)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] .py:65)150708 12:14:18.683:S [org.org.python.pycode._pyx0.call_function(E:\\ MyPython \\ MonkeyRunnerTest \\ test.py)的[com.android.chimpchat.adb.AdbChimpDevice] 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]位於org.python.core.PyCode.call(PyCode.java:18)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]位於org.python.core.Py.runCode(Py.java:1275)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]位於org.python.core。 內置 .execfile_flags( 內置 .java:522)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice]位於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.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77)的com.android.chimpchat.adb.AdbChimpDevice](MonkeyRunnerStarter.java:77)150708 12:14:18.683:S [main] [com.android.chimpchat.adb.AdbChimpDevice] com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189)150708 12:14:18.692:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]腳本因異常150708 12:14:18.692:S而終止[主要] [com.android.monkeyrunner.MonkeyRunnerOptions]跟蹤(最近一次通話最近):device.instrument(“ com.pp.assistant.test”中的文件“ E:\\ MyPython \\ MonkeyRunnerTest \\ test.py”,第64行/android.test.InstrumentationTestRunner”, params)的java.util.regex.Matcher.getTextLength(Matcher.java:1234)的java.util.regex.Matcher.reset(Matcher.java:308)的java.util.regex.Matcher。 228),位於com.android.chimpchat.adb.AdbChimpDevice.convertInstrumentResult(AdbChimpDevice.java:517)的com.android.chimpchat.adb.AdbChimpDevice.instrument的java.util.regex.Pattern.matcher(Pattern.java:1088) (AdbChimpDevice.java:504)在com.android.monkeyrunner.MonkeyDevice.instrument(MonkeyDevice.java:358)在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57 ),位於java.lang.reflect.Method.invoke(Method.java:606)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.NullPointerException:java.lang.NullPointerException

您可以改用AndroidViewClient / culebra

該腳本將幫助您運行不同軟件包的檢測,甚至列出它們。

#! /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() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM