所以我曾經從Jenkins中調用MonkeyRunner腳本來連接到USB Android設備並運行一些自動化測試,但是MonkeyRunner本身相當不穩定,所以我切換到了夢幻般的AndroidViewClient並移植了我的測試腳本使用這個純Python API。無法連接到Jenkins的Android設備
當獨立於shell調用時,新的Python腳本工作正常,但是目標是從Jenkins調用此腳本作爲構建後步驟。
我遇到的問題是USB設備的初始連接。以下腳本是實際測試腳本的一部分 - 這是測試USB設備是否存在並在連接到Android設備之前獲取其序列號的部分。這從ubuntu shell可以正常工作,但是從Jenkins'Execute Shell'調用時無法連接。
#! /usr/bin/env python
# Import Class Files
import re
import sys
import os
import time
import commands
import signal
import subprocess
import codecs
ubuntuHome = os.getenv('HOME')
sdkRootDefault = ubuntuHome + '/dev_env/ADT/sdk'
sdkRoot = os.getenv('ANDROID_SDK_ROOT',sdkRootDefault)
platformTools = sdkRoot + '/platform-tools'
# Find the attached devices
adbcmd = platformTools + "/./adb devices |grep -v attached |grep device |head -n 1 | cut -f1"
p = subprocess.Popen(adbcmd, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
serialnoIn = (p.stdout.readline()).strip()
# No devices found then exit
if len(serialnoIn) == 0 or serialnoIn is None:
print ("ERROR: No devices found")
sys.exit(1)
print "INFO: Trying Connection to " + serialnoIn + "..."
從Ubuntu的外殼的輸出爲:
INFO: Trying Connection to 3a005473...
從Jenkins的執行殼牌生成步驟
ERROR: No devices found
有趣的是,當該相同的片段從原始MonkeyRunner腳本中把它稱爲工作得很好。所以我在想MonkeyRunner會做一些我的Python腳本沒有做的初始設置?我不夠了解Python專家知道如何配置USB設備。任何幫助表示讚賞。