移动性能测试 monkeyrunner Python 中怎么导入 viewclient

jacky · 2014年01月20日 · 最后由 liyonghe 回复于 2014年01月26日 · 2236 次阅读

测试时想用 ViewClient,于是下了 jar 包,解压,添加环境变量,只写了一个导入语句的 py 文件,
from com.dtmilano.android import viewclient
在 Python 环境下直接运行 from com.dtmilano.android import viewclient,没有错误
C:\Users\Administrator>python
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.

from com.dtmilano.android import viewclient

但是用 monkeyrunner 运行 py 文件,会出错
C:\Users\Administrator>monkeyrunner D:\work\workspace\aaa\test.py
140120 17:04:28.586:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Scri
pt terminated due to an exception
140120 17:04:28.586:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Trace
back (most recent call last):
File "D:\work\workspace\aaa\test.py", line 27, in
from com.dtmilano.android import viewclient
ImportError: No module named dtmilano

问什么呢?导包的话该怎么写呢?菜鸟求指教。谢谢。

共收到 18 条回复 时间 点赞
jacky #18 · 2014年02月18日 Author

@lyh870107 你的库是在哪下的? 我的 AndroidViewClient 对应的 module 是 com.dtmilano.android.viewclient

jacky #17 · 2014年02月13日 Author

环境变量 ANDROID_VIEW_CLIENT_HOME ,代码里是 ANDROID_WRAPEASYMONKEY_HOME,
改过后还是老问题。
谢谢

井号--coding:utf-8-- 然后要用 test_import.py 的绝对路径来执行,monkeyrunner d://test//test_import.py

环境变量设置 ANDROID_VIEW_CLIENT_HOME 为 D:\MobileSDK\android-sdk-windows\tools\lib\AndroidViewClient\src
然后 test_import.py 内容为

# -*- coding: utf-8 -*-
import sys
import os
sys_path = sys.path[0].split(':')
FOLDER_PATH= sys_path[1]+":"+sys_path[2]

if not os.environ['ANDROID_WRAPEASYMONKEY_HOME']:
        #print os.environ['ANDROID_WRAPEASYMONKEY_HOME']
        print 'the environment ANDROID_WRAPEASYMONKEY_HOME does not exist'
ANDROID_WRAPEASYMONKEY_HOME = os.environ['ANDROID_WRAPEASYMONKEY_HOME']
sys.path.append(ANDROID_WRAPEASYMONKEY_HOME)


from com.whoistester.android.viewclient import ViewClient
from com.whoistester.android.wrapEasyMonkey import wrapEasyMonkey
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By
from com.android.hierarchyviewerlib.models import ViewNode

print ("start") 

代码请用代码块。

#13 楼 @jacky C:\AndroidViewClient-master\AndroidViewClient\src 要不,最后这句去掉试试~~?

jacky #13 · 2014年01月26日 Author

我的也是 Win7,把你说的 jar 包放到 SDK\tools\lib 下,还是 no attribute 'connectToDeviceOrExit'.
Code:
from com.dtmilano.android.viewclient import ViewClient
device, serialno= ViewClient.connectToDeviceOrExit(30, 'B07C0404332301G5')
vc= ViewClient(device, serialno)
ANDROID_HOME C:\sdk
JAVA_HOME C:\Java\jdk1.7.0_40
Path C:\Python27\;C:\Python27\Scripts\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0.;%ANDROID_HOME%;C:\sdk\platform-tools;C:\sdk\tools;C:\Program Files (x86)\nodejs\;E:\eclipse\plugins;C:\apache-maven-3.1.1\bin;C:\AndroidViewClient-master\AndroidViewClient\src

#11 楼 @jacky 我这是 win7~环境变量大致是这样~
ANDROID_HOME E:\DevSoftware\adt-bundle-windows-x86-20130522\sdk
JAVA_HOME C:\Program Files\Java\jdk1.6.0_21
Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;C:\Python27;C:\Python27\Scripts\;%ANDROID_HOME%;C:\Program Files\nodejs\;E:\DevSoftware\adt-bundle-windows-x86-20130522\eclipse\plugins;C:\Program Files\Apache Software Foundation\apache-ant-1.9.2\bin;E:\DevSoftware\adt-bundle-windows-x86-20130522\sdk\platform-tools;C:\Program Files\Git\cmd;

jacky #11 · 2014年01月26日 Author

@mingway_hu 是在 Linux 环境下吗?我的是 windows。
AttributeError: type object 'com.dtmilano.android.viewclient.ViewClient' has no
attribute 'connectToDeviceOrExit'.
其他的环境变量怎么配的?谢谢。

#7 楼 @jacky 我这没什么问题~启模拟器,打开 API Demo 那个 app,用 monkeyrunner 交互模式下试试

from com.dtmilano.android.viewclient import ViewClient
device, serialno= ViewClient.connectToDeviceOrExit(30, emulator-5554)
vc= ViewClient(device, serialno)
b= vc.findViewWithText('App')
b.touch()

主要是想看看 Python 写的自动化脚本,不是很懂,测 App 的话 一般有哪些框架呢?

额。。从你的描述上看你是测试 app,为什么要选择 mr 呢?

jacky #12 · 2014年01月23日 Author

@mingway_hu 现在导入没有问题,就是初始化不知道怎么搞,有简单的 demo 吗? 谢谢
AttributeError: 'javapackage' object has no attribute 'connectToDeviceOrExit'

androidviewclient-3.2.0.jar
我用的是这个包,当时在 github 上下的,放到\adt-bundle-windows-x86-20130522\sdk\tools\lib,就能导入了~
http://pan.baidu.com/s/1gd5N7ft 已入百度网盘,如需请自取。

我现在在 python 环境下执行 from com.dtmilano.android import viewclient 可以,执行 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 提示 No module named;在命令行执行 monkeyrunner,com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 的脚本可以, from com.dtmilano.android import viewclient 的脚本不行,提示 No module named。不知道该怎么弄。

对应的 jar 包需要在 classpath 下面, 你可以试试

jacky #16 · 2014年01月21日 Author

还是不行,No module named
其实我主要是想用 monkeyrunner 做测试,有一些 app 控件 id 都一样,比如 setting,为了获取控件对象,只能是根据控件上的 txt,有没有其它的方法实现呢?谢谢

记得以前是直接把 jar 包放到这个路径下就能导入了~
\adt-bundle-windows-x86-20130522\sdk\tools\lib

我记得 monkeyrunner 是基于 jython 的那.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册