subprocess.popen を使用して、adb shell monkey -p -v コマンドと adb logcat コマンドを実行する小さな python 関数を作成しました。値が 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