我在这个话题上找不到多少。
我正在尝试自动化应用程序测试,我将应用程序放在特定文件夹中,然后运行脚本: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)
,其中runcomponent是包+活动变量的组合。 还要注意:我并排显示device1.installPackages
两个以便于查看。我不在我的脚本上连续运行。
答案 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)