2

我在这个话题上找不到太多东西。我正在尝试自动化应用程序测试,将应用程序放置在特定文件夹中并运行脚本:monkeyrunner.bat -v ALL myscript.py,并且脚本在名为 的文件夹中的任何 apk 上执行apkrepository。这使得我不必在每次测试新应用程序时都更改我的 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 和 android sdk 的 windows 7 64 位。

感谢您提供的任何输入/帮助!我被这件事难住了几天。

变量确实适用于其他地方(monkeyrunner 附属类),例如device1.startActivity(component=runcomponent),其中 runco​​mponent 是包 + 活动变量的组合。另请注意:我device1.installPackages并排展示了两者以便于查看。我不会在我的脚本上连续运行两者。

4

1 回答 1

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)
于 2012-10-09T21:38:13.103 回答