我编写了一个小的 python 函数,它运行 adb shell monkey -p -v 命令以及使用 subprocess.popen 的 adb logcat 命令。对于大于 100 的值,该程序会崩溃,我不知道为什么。
这是monkey_runner.py
import os, subprocess
def run_monkey_process(package, num_commands):
monkeycmd = "adb shell monkey -p " + package + " -v " + num_commands
monkeyprocess = subprocess.Popen(monkeycmd, stdout=subprocess.PIPE)
logcatcmd = "adb logcat"
logcatprocess = subprocess.Popen(logcatcmd, stdout=subprocess.PIPE)
monkeystring = monkeyprocess.communicate(input=None)[0]
logcatstring = logcatprocess.communicate(input=None)[0]
monkeyreturncode = monkeyprocess.poll()
logcatreturncode = logcatprocess.poll()
if(monkeyreturncode >=0):
monkeyprocess.kill()
logcatprocess.kill()
return monkeystring, logcatstring
else:
print 'command failure'
return 'you', 'fail'
我也可以把我的 gui 代码放在这里,但这没什么特别的。
这是堆栈跟踪
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "C:\Users\brandon.dalesandro\Desktop\Zonar\mankey\monkey_runner_gui.py", line 25, in goCallBack
returned = run_monkey_process(package, num)
File "C:\Users\brandon.dalesandro\Desktop\Zonar\mankey\monkey_runner.py", line 8, in run_monkey_process
logcatstring = logcatprocess.communicate(input=None)[0]
File "C:\Python27\lib\subprocess.py", line 798, in communicate
stdout = _eintr_retry_call(self.stdout.read)
File "C:\Python27\lib\subprocess.py", line 478, in _eintr_retry_call
return func(*args)
KeyboardInterrupt