2014-01-31 33 views
0

我對使用MonkeyRunner的ViewClient擴展感興趣,因爲它已經運行到使用純MonkeyRunner的Broken Pipe問題中。將monkeyrunner導入到python中ViewClient

我還需要在device.press(...),device.touch(...),device.drag(...)函數中使用X/Y座標,而不是a正常的android層次結構),所以爲此我需要將MonkeyRunner導入到ViewClient Phyton腳本中 - 但是對於測試中的Android Apps部分,我可以使用ViewClient正確的搜索id在heirarchy中。除非有人知道如何在調用vc.touch()/ vc.drag()等之前在ViewClient中設置硬編碼的X/Y?

因此,我的Python腳本中有以下標題,它試圖拉入ViewClient環境和MonkeyRunner路徑。然而運行腳本總是導致同樣的錯誤:

ImportError: No module named android.monkeyrunner

腳本,設置環境了被這種方式構造的部分(環境 - Ubuntu的12.04 LTS)

#! /usr/bin/env python 

# Import Class Files 

import sys 
import os 

# This must be imported before MonkeyRunner and MonkeyDevice, 
# otherwise the import fails. 
# PyDev sets PYTHONPATH, use it 
try: 
    for p in os.environ['PYTHONPATH'].split(':'): 
     if not p in sys.path: 
      sys.path.append(p) 
except: 
    pass 

try: 
    sys.path.append(os.environ['ANDROID_VIEW_CLIENT_HOME']) 
    sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src')) 
    sys.path.append(os.path.join(os.environ['ANDROID_SDK_ROOT'], 'tools/lib/monkeyrunner.jar')) 
    sys.path.append(os.path.join(os.environ['ANDROID_SDK_ROOT'], 'tools/lib')) 
except: 
    pass 

print sys.path 

from com.dtmilano.android.viewclient import ViewClient, View 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

所以輸出的上面看起來是這樣的:

mactwixs:~/AndroidViewClient/examples$ ./monkeyscript3.py 
['/home/mactwixs/AndroidViewClient/examples', '/home/mactwixs/AndroidViewClient/examples', '/home/mactwixs/AndroidViewClient', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol', '', '/home/mactwixs/AndroidViewClient', '/home/mactwixs/AndroidViewClient/src', '/home/mactwixs/dev_env/ADT/sdk/tools/lib/monkeyrunner.jar', '/home/mactwixs/dev_env/ADT/sdk/tools/lib'] 
Traceback (most recent call last): 
    File "./monkeyscript3.py", line 41, in <module> 
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 
ImportError: No module named android.monkeyrunner 

謝謝!

UPDATE:

有趣的是:

mactwixs:~/AndroidViewClient/examples$ python 
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path_hooks 
[<type 'zipimport.zipimporter'>] 
>>> 

如果有不<type 'org.python.core.JavaImporter'>呢?

UPDATE2:

這樣的區別是:

mactwixs:~/AndroidViewClient/examples$ python 
**Python** 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

mactwixs:~/AndroidViewClient/examples$ monkeyrunner 
**Jython** 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35) 
[Java HotSpot(TM) 64-Bit Server VM (Sun Microsystems Inc.)] on java1.6.0_24 
>>> 

....所以讓我來試試intsalling Jython的!

UPDATE3:

沒有。現在它與ViewClient戰鬥,所以我回到了原點......我發現了ViewClient提供的check-import.py。在出了這讓我覺得自己是不是設置完全正確的monkeyrunner而不是蟒蛇正在呼籲viewclient.py & adbclient.py ...

mactwixs:~/AndroidViewClient/examples$ monkeyrunner check-import.py --debug 
sys.path= ['/home/mactwixs/dev_env/ADT/sdk/tools/lib/monkeyrunner.jar', '/home/mactwixs/AndroidViewClient/examples', '/home/mactwixs/dev_env/ADT/sdk/tools/lib/Lib', '/home/mactwixs/dev_env/ADT/sdk/tools/lib/jython-standalone-2.5.3.jar/Lib', '__classpath__', '__pyclasspath__/', '/home/mactwixs/AndroidViewClient/src'] 
/home/mactwixs/AndroidViewClient/src/com/dtmilano/android/viewclient.py:27: RuntimeWarning: 

    You should use a 'python' interpreter, not 'monkeyrunner' for this module 


    warnings.warn(
/home/mactwixs/AndroidViewClient/src/com/dtmilano/android/adb/adbclient.py:26: RuntimeWarning: 

    You should use a 'python' interpreter, not 'monkeyrunner' for this module 


    warnings.warn(
OK 
+0

可以請你給出步驟如何在Windows上運行androidviewclient腳本 – Karan

回答

3

我做了一些嘗試,也通過看GIT倉庫,並確定我確實可以根據需要拖動& touch,但沒有使用MonkeyRunner,而只使用Python - 所以我的問題已經消失,因爲我不必導入Monkey庫。

import sys 
import os 
import time 

try: 
    sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src')) 
except: 
    pass 

from com.dtmilano.android.adb import adbclient 
import com.dtmilano.android.viewclient as viewclient 

device, serialno = viewclient.ViewClient.connectToDeviceOrExit(verbose=True) 
device.drag((960,1497),(214,1496),0.15,10) 

time.sleep(2) 

device.touch(610, 1734, adbclient.DOWN_AND_UP) 

time.sleep(2) 
+0

這是正確的。 * AndroidViewClient *是'monkeyrunner'的**替代品,只使用python。 –