monkeyrunner를 사용하여 동일한 pc에 연결된 여러 태블릿을 구성하려고합니다. 코드는 1 타블렛에서 작동하지만 여러 타블렛에서 실행하려고 할 때마다 불어납니다.장치에서 Monkeyrunner 병렬 실행
다음은 monkeyrunner python 파일을 호출하는 코드입니다. mr1.py는 내가 실행하려고하는 monkeyrunner 파일입니다.
import sys
import util
import threading
import commands
class myThread (threading.Thread):
def __init__(self, threadID, deviceId,env_path):
self.threadID = threadID
self.deviceId = deviceId
self.path = env_path
threading.Thread.__init__(self)
def run(self):
print "Starting " + self.deviceId
ret = commands.getstatusoutput(self.path+"monkeyrunner mr1.py "+self.deviceId)
print ret
print "Exiting " + self.deviceId
def main():
connected_devices = util.get_connected_devices()
count = 0
path = "/Users/ad/Desktop/android-sdk-macosx/tools/"
for device in connected_devices:
thread = myThread(count,device[0],path)
thread.start()
count = count + 1
if __name__ == "__main__":
main()
나는 monkeyrunner의 경쟁 조건에 대해 설명하는이 블로그 포스트를 발견했습니다. 문제의 원인이 무엇인지 확실하지 않습니다.
http://distributedreasoner.blogspot.com/2011/06/android-monkeyrunner-and-google-adb.html
는 또한 위의 블로그 게시물에서 언급 한 MAML 라이브러리를 사용하여 시도,하지만, 난 여전히 여러 장치에 simulatenously을 실행 monkeyrunner을 얻을 수 있었다 havent 한. 다음은 실제 원숭이 러너 코드입니다. Commonsware의 질문을 바탕으로import sys
import maml
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
deviceId = sys.argv[1]
# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection(10.0,deviceId)
packagename = "com.android.settings"
classname = "com.android.settings.DisplaySettings" #SecuritySettings" #".DisplaySettings"
componentname = packagename + "/" + classname
device.startActivity(component=componentname)
maml.click(device,1088,300)
MonkeyRunner.sleep(0.4)
maml.click(device,864,361)
MonkeyRunner.sleep(0.4)
maml.click(device,612,621)
MonkeyRunner.sleep(0.5)
device.press ('KEYCODE_HOME', 'DOWN_AND_UP')
print "Exiting for device !" + deviceId
, 나는 다음과 같은 순차적 인 코드 스레딩 코드를 교체하고 괜찮아요 작동하는 것 같다,하지만 분명히이 가장 이상적인 상황이 아니다. 안드로이드 사용자가 프로그래밍 방식으로 위치/언어 설정 등을 수정할 수 나던, 내가 설정을 변경할 수 많은 태블릿을 구성해야하기 때문에
for device in connected_devices:
print device[0]
ret = commands.getstatusoutput(path+"monkeyrunner mr1.py "+device[0])
print ret
는 즉시 옵션은 MonkeyRunner을 사용하는 것이 었습니다. 몇 가지 메모, 나는이 문제를 해결하기 위해 monkeyrunner 이외의 다른 도구를 사용할 수 있습니다. 이 문제에 대한 도움을 주시면 감사하겠습니다.
순식간에 또는 동시에 여러 태블릿에서 실행하려고합니까? "모두 불어서"정확히 무엇을 의미합니까? – CommonsWare
동시에. "모든 폭파로"나는 아무 일도 일어나지 않는다는 것을 의미합니다. 예를 들어, monkeyrunner 코드에서 붙여 넣기가 처음 설정을 열고을 누른 다음 화면 자동 회전을 클릭 한 다음 항상 켜기로 변경합니다. 내 PC에 연결된 2 개의 장치에서 실행했을 때 디스플레이 설정 만 열렸습니다. 다른 클릭은 발생하지 않았습니다. 다시 말하지만 스크립트를 실행할 때마다 똑같은 동작이 아닙니다. 때로는 일부 클릭이 1 개의 기기에서 작동하지만 다른 기기에서는 작동하지 않는 경우도 있습니다. –
smk
태블릿이 가로 방향으로 있다고 가정합니다. – smk