我有一个连接到 Android 设备并在其上部署 APK 的 monkeyrunner 脚本。
serial = '12345JKL'
device = MonkeyRunner.waitForConnection(deviceId=serial)
device.installPackage(path_to_apk)
当我使用 Windows 命令 shell 执行脚本时,这可以完美地工作。
"C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter
问题是我想让 my_script.py 由同一台 PC 上的 TeamCity(Enterprise 6.0.3)构建配置执行:这失败了。请在此处找到堆栈跟踪:http: //pastebin.com/CjWy95c3
首先,我认为 TC 弄乱了脚本的参数。但是来自 TC 构建日志的命令
[00:55:12]: Starting: "C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter
in directory: C:\some_dir
与命令外壳中的相同,因此当我将命令复制到命令外壳时,脚本可以连接到设备并且工作正常,而C:\some_dir
我的当前目录是。
我无法在 TC 之外重现此错误。
我想强调这一切都发生在同一台 PC(Win 7 x64)上。该脚本在从命令 shell 执行时有效,但在由 TC 构建配置触发时失败(总是在尝试连接到设备时)。
我想不出发生这种情况的原因,如果有人能指出我正确的方向,我会非常高兴。
提前谢谢了
编辑:事实证明,问题不仅限于MonkeyRunner.waitForConnection()
调用MonkeyRunner.sleep(5)
. 堆栈跟踪
莫非 MonkeyRunner 和 TeamCity 相处得不好?