0

これが私がする必要があることです。モンキーランナーを使用してテストする必要がある2つのデバイスがあります。Pythonとmonkeyrunnerを使用した自動テストです。2台のデバイスで同時にテストを実行したいので、スレッドを使用することを考えました。

これがコードです

スレッドのインポート

import datetime import os、sys

com.android.monkeyrunnerからConfigParserをインポートします

日時からMonkeyRunner、MonkeyDevice、MonkeyImageをインポートします

java.netから日時をインポートするhashlibをインポートする

com.ziclix.python.sqlからSocketExceptionをインポートします

zxJDBCをインポートする

def UseThread(data1、data2、data3、devID、Code、ScreenshotRef、logFile):

 device = MonkeyRunner.waitForConnection(10, devID)

'threaded code'

'initialization'

file = open(os.path.dirname(os.path.realpath(file))+'\ Samples.txt'、'r')while 1:

一方1:line = file.readline()

if not line:

    print 'Done!'

    break

else:

    line


val=line.split('\t')

data1 = val[0]

data2 = val[1]

data3 = val[2]

threads = []

for Code in cp.options('p'):

    devID = cp.get('product',Code).strip()

    ScreenshotRef = cp.get('source','ScreenshotRef') + '\\' + prodCode.upper()

    logFile = outputFolder + '\\' + prodCode.upper() + '\\logs.txt' 

    t=threading.Thread(target=UseThread,args=(data1, data2, data3, devID, prodCode, ScreenshotRef, logFile))
    threads.append(t)
    t.start()

for i in range(0,len(threads)):
    threads[i].join()

問題はこれです。whileループが1回の実行を終了し、2回目の実行に進むと、monkeyrunnerが接続を待機しているときに、コードがその部分でハングします。正確には、これは停止する部分です

デバイス=MonkeyRunner.waitForConnection(10、devID)

メッセージには「Monkeycommandwake」と表示されます。

接続を確立する行の前に何かを印刷しようとしたため、問題はスレッドではなく接続に関係していると思います。

すでに接続しているのに接続に問題がありますか?最初に前の接続を閉じる必要がありますか?

4

1 に答える 1

0

MonkeyRunner の waitForConnection は、1 つのデバイスに対してのみ機能します。これを 2 回実行することはできません。別のインスタンスから実行できます

于 2013-02-27T22:20:00.030 に答える