Так что я использовал сценарий MonkeyRunner из Jenkins для подключения к устройству USB Android и запускал некоторые автоматические тесты, однако сам MonkeyRunner был довольно нестабилен, поэтому я переключился на фантастический AndroidViewClient и портировал мой тестовый скрипт для использования этого чистого API Python.Не удалось подключиться к Android-устройству от Jenkins
Новый скрипт Python отлично работает при вызове независимо от оболочки, однако целью является вызов этого сценария из Jenkins в качестве этапа пост-сборки.
Проблема, с которой я столкнулась, - это первоначальное подключение к устройству USB Android. Скрипт ниже - это фрагмент из фактического тестового сценария - это та часть, которая проверяет наличие USB-устройства и получает его серийный номер перед подключением к устройству Android. Это отлично работает с оболочкой ubuntu, однако не удается подключиться при вызове из командной строки Jenkins.
#! /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 Shell выход:
INFO: Trying Connection to 3a005473...
С Дженкинс 'Выполнить Shell' шаг
ERROR: No devices found
сборки Интересно, когда этот же фрагмент был назван внутри оригинального MonkeyRunner скрипта работал отлично. Итак, я думаю, что MonkeyRunner делает некоторые первоначальные настройки, которые мой скрипт Python не делает? Мне не хватает эксперта Python, который знает, как настроить USB-устройства. Любая помощь приветствуется.