从Intent(或SL4A)启动Android测试



我想运行一些android测试,但我想取消或延迟这些测试的执行。我正试图从SL4A做到这一点。这个想法是安装SL4A,从我的笔记本电脑启动服务器,运行一个特殊的python脚本,它会休眠大约20秒,然后唤醒并启动测试。我正在执行一些相当复杂的自动化操作,这需要在安装测试并断开USB电缆后运行测试。我知道我可以从SL4A发布意图,但我正在寻找等效的:

adb shell am instrument 
     -e class MyInstrumentationTestCase 
     -w MyInstrumentationTestRunner

这可以通过意图来实现吗?我应该发送广播还是使用启动活动功能?

我试着用这个脚本从Python直接在设备上运行系统命令,但我得到了一个"拒绝权限"错误:

from subprocess import call
call(["am", "instrument", "-e", "class", "com.example.android.app.test.TestContactList", "-w", "com.example.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner"])

更新我还尝试过使用os.system来运行该命令(请参阅下面的修改(,这会给出一个不同的错误:soinfo_link_image(linker.cpp:1635(:无法加载"app_process"所需的库"libanroid_runtime.so";由so info_relocate(linker.cpp:975(引起:找不到"lib android_runtime.so"引用的符号"sqlite3_stmt_readonly"…无法链接可执行

import os
#from subprocess import call
#call(["am", "instrument", "-e", "class", "com.example.android.app.test.TestContactList", "-w", "com.example.android.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner"])
os.system('echo "Running tests"')
os.system('am instrument -e class com.example.android.app.test.TestContactList -w com.example.android.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner')

还有其他选择吗?

我有以下函数,它将从Python SL4A脚本中启动任何SL4A脚本,作为一个单独的过程。对于这种类型的东西,不能使用subprocess

你也许可以从中推断出你需要什么。

from android import Android
droid = Android()
def launch_script(path, visible=False):
    visibilty   = 'FORE' if visible else 'BACK'
    activity    = 'com.googlecode.android_scripting.action.LAUNCH_{0}GROUND_SCRIPT'.format(visibilty)
    extras      = {'com.googlecode.android_scripting.extra.SCRIPT_PATH': path}
    packagename = 'com.googlecode.android_scripting'
    classname   = 'com.googlecode.android_scripting.activity.ScriptingLayerServiceLauncher'
    intent      = droid.makeIntent(activity, None, None, extras, None, packagename, classname).result
    droid.startActivityIntent(intent)

相关内容

  • 没有找到相关文章

最新更新