2012-01-19 53 views
0
#!/bin/python 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 
import time 
import commands 
import sys 
import string 
import random 

device = MonkeyRunner.waitForConnection(10) 

device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP) 
time.sleep(1) 
device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP) 

package = 'com.pak.pak1' 
activity = 'com.pak.pak1.Activity123' 
runComponent = package + '/' + activity 
device.startActivity(component=runComponent) 
time.sleep(1) 

device.touch(20, 90, MonkeyDevice.DOWN_AND_UP) 
time.sleep(2) 
device.touch(20, 90, MonkeyDevice.DOWN_AND_UP) 
#time.sleep(10) 
device.touch(450, 95, MonkeyDevice.DOWN_AND_UP) 

如果我运行该脚本,这样它工作得很好破裂的管道异常

但如果我把一些延迟(time.sleep(10)),那么TI给出了这样的错误

120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] Error getting the manager to quit 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice]java.net.SocketException: Broken pipe 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at java.net.SocketOutputStream.socketWrite0(Native Method) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at java.io.BufferedWriter.flush(BufferedWriter.java:236) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.MonkeyManager.sendMonkeyEventAndGetResponse(MonkeyManager.java:167) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.MonkeyManager.quit(MonkeyManager.java:288) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.adb.AdbMonkeyDevice.dispose(AdbMonkeyDevice.java:79) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.adb.AdbBackend.shutdown(AdbBackend.java:120) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:95) 
120119 10:31:24.823:S [main] [com.android.monkeyrunner.adb.AdbMonkeyDevice] at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:203) 
+0

你得到一个睡眠时间<10秒同样的错误? –

+0

是的,即使有1秒钟,我不知道这是否与氰基mod的使用有关:S – Lukap

+0

这不是一个伟大的英特尔,但我认为你有一个失败的管道,因为你失去了你的经理。 –

回答

0

嗯,我想这是我的cyanogenmod问题。在手机上安装新的操作系统后,它工作正常。所以问题不在脚本中,它与我的越野车氰基模块

0

当等待连接超时时发生异常。

尽管文档提到默认为永久超时,但我发现设置更高的超时值以及设备ID似乎可以解决此问题。

一个例子MonkeyRunner.waitForConnection(1000, “模拟器-5554”)