Appium自动化热插拔识别测试设备,Android&iOS均可实现调用启动

         最近在写一些Python实现一些自动化的测试项目,首先在Appium测试环境的搭建及测试用例的整理耗费了一些时间,不过在后期的测试准备中,比较有趣的是在Appium+Python进行识别设备的时候,原先都是对设备进行单独修改参数,需要每台手机插入电脑,都可以测试,只能对单台设备进行调试,在开发测试用例和执行自动化脚本的时候相当不方便,研究了adb相关指令后,研究并实现了使用“热插拔”技术,于是重新写了一些Python脚本来实现任意设备插入电脑均可以执行测试脚本,极大地增加了测试的工作效率,不同的设备执行相同的指令,执行的设备无非就是遍历adb devices中的设备。Android和iOS有很多共通的地方,比如均可以使用类似adb的指令进行获取参数。

准备工作:

        首先部署好测试环境建议采用Linux或者mac环境便于后续的测试工作,让你的终端环境输入adb devices可以识别到安卓设备,这个环境的部署,网上有很多资料,这边就不详细进行叙述。

          接下来是重点讲述一些一下iOS测试环境,libmobiledevice工具包的安装,需要让你的终端环境输入idevice_id --list可以识别到iOS设备。

附录:

  • 在Mac下使用brew进行安装
sudo brew update
sudo brew install libimobiledevice
sudo brew install ideviceinstaller
  • Ubuntu使用apt-get进行安装
sudo add-apt-repository ppa:pmcenery/ppa
sudo apt-get update
apt-get install libimobiledevice-utils
sudo apt-get install ideviceinstaller

实现Android自动识别设备,只需实现platformVersion和deviceName的自动识别即可:

# 读取设备系统版本号
deviceAndroidVersion = list(os.popen('adb shell getprop ro.build.version.release').readlines())
platformVersion = re.findall(r'[^\r]+', deviceAndroidVersion[0])[0]

print(platformVersion)
# 读取设备 id
readDeviceId = list(os.popen('adb devices').readlines())
deviceName=re.findall(r'[^\s]+',readDeviceId[1])[0]
print(deviceName)

# 引入单元测试模块
class TestCase(unittest.TestCase):
    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = platformVersion
        desired_caps['deviceName'] = deviceName
...

实现Android自动识别设备,只需实现platformVersiondeviceID、udid的自动识别即可: 

#通过ideviceinfo获取设备参数
appleinfo_list=list(os.popen('ideviceinfo').readlines())
appleinfo={}
for item in appleinfo_list:
    appleinfo_temp=item.split(': ')
    appleinfo.update({appleinfo_temp[0]: appleinfo_temp[1]})
#读取platformVersion
platformVersion=appleinfo.get('ProductVersion')
print(platformVersion)
#读取deviceName
deviceID=appleinfo.get('DeviceClass')
print(deviceID)

#读取iOS udid
appleudid=appleinfo.get('UniqueDeviceID').strip()
print(appleudid)

# 准备初始化
class TestCase(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'iOS',
            'platformVersion': platformVersion,
            'deviceName': deviceID,
            'bundleId': '****APP包名****',
            'udid':appleudid,

...

到此为此,就可以实现热插拔设备脚本测试,欢迎指正。 

猜你喜欢

转载自blog.csdn.net/tswc1990/article/details/81777324