python appium 并行多设备_学会使用python启动多个appium server,然后获取多台设备的driver...

思路如下:

第一步,搭建appium环境,可参考博客 移动端自动化测试-Windows-Android-Appium环境搭建 (我之前已搭建好环境,忽略了第一步)

第二步,使用USB线连接PC端和要测试的设备

第三步,获取设备信息,即设备ID,设备版本号,设备的appActivity。可参考我之前的一篇文章 获取设备信息

第四步,创建start_appium.bat文件,用来存储启动appium server的指令,文件内容为空

第五步,编写脚本实现

项目路径如下:

项目结构.png

文件名:AppiumService.py,代码如下:

import os

from time import sleep

from appium import webdriver

from com.appium.product.GetDevicesMsgs import GetDeviceMsgs

# 开启appium server

def start_server(IP, PORT):

text = "@echo off\ntitle start Appium Server {}\ncmd /c \"appium -a {} -p {} --session-override\"".format(IP, IP, PORT)

ff = open('start_appium.bat', 'w') #以覆盖的形式写入

ff.write(text)

ff.close()

os.system('start start_appium.bat')

sleep(15)

def desired_capabilities(info):

info = info

#定义appium参数

desired_caps = {

'platformName': 'Android',

'platformVersion': info['deviceVersion'],

'deviceName': info['deviceId'],

# 因为我们的业务,所有的APP的报名都是一样的,所以这里是写死的,比如com.****.***

'appPackage': '替换为自己APP的包名',

'appActivity': info['appActivity'],

# 不要在会话前重置应用状态

"noReset": True,

'appWaitPackage': '替换为自己APP的包名',

'newCommandTimeout': 1800,

}

return desired_caps

def get_driver():

# 获取设备ID

ids = GetDeviceMsgs().getDeviceIds()

# 获取设备信息 即设备ID,设备版本号,设备的appActivity

deviceinfo_info = GetDeviceMsgs().getDeviceMsgs(ids)

print("deviceinfo_info is ", deviceinfo_info)

# 存储设备的driver集合

driver_cap = {}

num = 5

for info in deviceinfo_info:

IP = "127.0.0.{}".format(num)

if len(str(num)) == 1:

PORT = "472{}".format(num)

else:

PORT = "47{}".format(num)

start_server(IP, PORT)

# 定义appium参数

desired_caps = desired_capabilities(info)

# 获取设备driver

driver = webdriver.Remote('http://{}:{}/wd/hub'.format(IP, PORT), desired_caps)

driver.implicitly_wait(15)

print("driver is ", driver)

# 将设备driver存储在字典中,key值为设备的deviceId

driver_cap[info['deviceId']] = driver

num = num + 2

return driver_cap

if __name__ == '__main__':

get_driver()

你可能感兴趣的:(python,appium,并行多设备)