2

test.py スクリプトの内容:

import ....

device = MonkeyRunner.waitForConnection(10,sys.argv[1])

device.startActivity(component='package/activity')

'''
some monkeyrunner events
'''

device1-id と device2-id というラベルの付いた 2 つの device があります

  1. monkeyrunner test.py device1-id & を実行します

  2. monkeyrunner test.py device2-id & を実行します

device2-id のいくつかのイベントが device1-id に送信されていることがわかりました。どうしてか分かりません ?

私はいくつかのチュートリアルに気付きました.monkeyrunnerをより多くのデバイスで実行すると、以下のようなスクリプトを書くことができると彼らは言いました:

device1 = MonkeyRunner.waitForConnection(10,device1-id)
device2 = MonkeyRunner.waitForConnection(10,device2-id)

device1.actions

device2.actions

しかし、これは私が必要としていたものではありませんでした。モンキーランナーがこれを行う理由を知っている人はいますか?

私が必要としているのは、1 つのスクリプトがあり、複数のデバイスで同じスクリプトを同時に実行することです。

4

2 に答える 2

3

モンキーポートを指定する必要があるため、次のようなコマンドライン引数を使用することができます

 # Imports the monkeyrunner modules used by this program
 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
 import sys

 # Connects to the current device, returning a MonkeyDevice object
 device = MonkeyRunner.waitForConnection(timeOut,"emulator-"+ sys.argv[1])

 MONKEYRunner Actions . . . . 

注: sys.arv[0] は常にテスト ファイルです。

コマンド ラインで次のように入力して呼び出します。

   monkeyrunner test.py PortNumber  
于 2012-11-19T19:09:02.043 に答える
1

Monkeyrunner はスレッドセーフではないと思います。

これをテストするには、2 つのスクリプトを作成し、それぞれに deviceId をハードコーディングします。各スクリプトを開始します。Windows では、「start script1」を使用してから「start script2」を使用します。Unix では、「script1 &; script2 &」を使用します。

script1 が正常に動作し始めたように見えた後、エラーで失敗することに注意してください。また、SCript2 は、両方のウィンドウからコマンドを取得するため、意図したことを実行できません。

于 2013-06-21T15:50:03.523 に答える