脚本设备思路:
- 启动单个服务
- 启动单个设备并启动应用
- 利用多进程并发启动多个服务(具体设计思路如下)
- 利用多进程并发启动多个设备并启动应用(具体设计思路如并发启动多个appium服务)
完整脚本:
from time import sleep
import multiprocessing
from multi_appium.multi_server_sync import appium_start
from find_element.desired_caps import appium_desire
from multi_appium.check_port import *
devices_list=['127.0.0.1:62001','0483909e'] #启动多个模拟器
def start_appium_action(host,port):
#检测端口是否被占用,如果没有被占用则启动appium服务
if check_port(host,port):
appium_start(host,port)
return True
else:
print("appium %s start failed!" %port)
return False
def start_devices_action(udid,port):
#检测appium服务是否启动,启动成功则再启动app,否则释放端口
host='127.0.0.1'
if start_appium_action(host,port):
appium_desire(udid,port)
else:
release_port(port)
def appium_start_sync():
print("=====并发启动appium服务=====")
appium_process=[]
# 加载appium进程
for i in range(len(devices_list)):
host = '127.0.0.1'
port = 4723+2*i
appium = multiprocessing.Process(target=start_appium_action, args=(host, port))
appium_process.append(appium)
for appium in appium_process:
appium.start()
for appium in appium_process:
appium.join()
#appiumq启动后需要等待几秒后才会启动成功
#sleep(10)
def devices_start_sync():
print("=====并发启动设备=====")
desired_process = []
# 加载desired进程
for i in range(len(devices_list)):
port = 4723+2*i # 第一个端口号是4723,第二个是4725
desired = multiprocessing.Process(target=start_devices_action, args=(devices_list[i], port))
desired_process.append(desired)
# 同时启动多设备执行测试
for desired in desired_process:
desired.start()
for desired in desired_process:
desired.join()
if __name__ == '__main__':
appium_start_sync()
devices_start_sync()
执行结果: