在monkeyrunner的“.installPackage()”中使用变量的问题

时间:2012-10-09 20:44:03

标签: android python windows monkeyrunner

我在这个话题上找不到多少。 我正在尝试自动化应用程序测试,我将应用程序放在特定文件夹中,然后运行脚本:monkeyrunner.bat -v ALL myscript.py,脚本在名为apkrepository的文件夹中的任何apk上执行。这使得我每次测试新应用程序时都不必更改我的python脚本。

我遇到麻烦的部分是我正在尝试使用device1.installPackage()的变量 请参阅下面的代码。

installme = os.popen(r'dir C:\users\uname\desktop\apkrepository /A:-d /B').read()
print installme
# => com.application.android.apk #or whatever the package name is

filepath = r'C:\users\uname\desktop\apkrepository'

androidapp = filepath + '\\\' + installme

print androidapp
# => C:\users\uname\desktop\apkrepository\com.application.android.apk
#This exactly what I type below manually to get it to work 

device1= MonkeyRunner.waitForConnection(15, "emulator-5554")
#Emulator was started in previous section of code, which is not shown here.

device1.installPackage(androidapp)
#DOES NOT WORK!!

device1.installPackage('c:\users\uname\desktop\apkrepository\com.application.android.apk')
 #The only way it works seems to be to write the path in manually everytime.

我已经尝试了很多不同的方法让它正常工作,我不确定它是否是我正在尝试做的事情。如果变量打印出正确的文件路径,我看不出它会有什么问题。这可能是非常简单的事情,但这就是我被困住的地方。它给出的错误:

E/Device: Error dyring Sync: Local Path does not exist. Error installing package C:\users\uname\desktop\apkrepository\com.application.android.apk

我正在使用带有python2.7的Windows 7 64位和android sdk。

感谢您提供的任何输入/帮助!我被这几天困扰了。

变量DO适用于其他地方(monkeyrunner附属类),如device1.startActivity(component=runcomponent),其中runco​​mponent是包+活动变量的组合。 还要注意:我并排显示device1.installPackages两个以便于查看。我在我的脚本上连续运行。

1 个答案:

答案 0 :(得分:2)

我在linux机器上尝试过相同的功能。请看一下monkeyrunner脚本。

#! /usr/bin/env monkeyrunner
import re
import sys
import os
import java
import glob
import os

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device1= MonkeyRunner.waitForConnection(15, "emulator-5554")
mydir="/home/user/apk"
os.chdir(mydir)
for files in glob.glob("*.apk"):
    print files
    print "path " ,os.path.abspath(mydir+"/"+files)
    device1.installPackage(mydir+"/"+files)