电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 基于Appium控制多設備并行執(zhí)行

瀏覽:2日期:2022-06-24 18:39:59
前言:

如何做到,控制多設備并行執(zhí)行測試用例呢。

思路篇

我們去想下,我們可以獲取參數(shù)的信息,和設備的信息,那么​我們也可以針對每臺設備開啟不一樣的端口服務。那么每個服務都對應的端口,我們在獲取設備列表的時候,要和 每個服務對應起來,這樣,我們開啟一個進城池,我們在進程池里去控制設備,​每個進程池 控制不一樣的設備即可。

實現(xiàn)篇

首先實現(xiàn)對應的參數(shù)篇和對應的設備端口,

def startdevicesApp(): l_devices_list=[] port_list=[] alldevices=get_devices() if len(alldevices)>0:for item in alldevices: port=random.randint(1000,6000) port_list.append(port) desired_caps = { ’platformName’: ’Android’, ’deviceName’: item, ’platformVersion’: getPlatForm(item), ’appPackage’: get_apkname(apk_path), # 包名 ’appActivity’: get_apk_lautc(apk_path), # apk的launcherActivity ’skipServerInstallation’: True,'port':port} l_devices_list.append(desired_caps) return l_devices_list,port_list

​接下來,我們去​寫一個端口開啟服務。

class RunServer(threading.Thread):#啟動服務的線程 def __init__(self, cmd): threading.Thread.__init__(self) self.cmd = cmd def run(self): os.system(self.cmd)def start(port_list:list): def __run(url): time.sleep(10) response = urllib.request.urlopen(url, timeout=5) if str(response.getcode()).startswith('2'): return True for i in range(0, len(port_list)): cmd = 'appium -p %s ' % ( port_list[i]) if platform.system() == 'Windows': # windows下啟動server t1 =RunServer(cmd) p = Process(target=t1.start()) p.start() while True: time.sleep(4) if __run('http://127.0.0.1:' + port_list[i]+ '/wd/hub/status'): break

​我們開啟服務了,接下來,我們怎樣根據(jù)​不同進程執(zhí)行測試用例。

def runcase(devics): #執(zhí)行測試用例 passdef run(deviceslist:list):​ pool = Pool(len(deviceslist)) for i in deviceslist: pool.map(runcase, i) pool.close() pool.join()

接下來,就是我們去組合形成最后的執(zhí)行的代碼。

最終代碼展示

from appium import webdriverfrom androguard.core.bytecodes.apk import APKimport osimport randomapk_path = '/Users/lileilei/Downloads/com.tencent.mobileqq_8.5.0_1596.apk'def get_devices() -> list: all_devices = [] cmd = 'adb devices' reslut = os.popen(cmd).readlines()[1:] for item in reslut: if item != 'n': all_devices.append(str(item).split('t')[0]) return all_devicesdef getPlatForm(dev: str) -> str: cmd = ’adb -s {} shell getprop ro.build.version.release’.format(dev) reslut = os.popen(cmd).readlines()[0] return str(reslut).split('n')[0]def get_apkname(apk): a = APK(apk, False, 'r') return a.get_package()def get_apk_lautc(apk): a = APK(apk, False, 'r') return a.get_main_activity()import platformfrom multiprocessing import Process,Poolimport time,urllib.requestimport threadingclass RunServer(threading.Thread):#啟動服務的線程 def __init__(self, cmd): threading.Thread.__init__(self) self.cmd = cmd def run(self): os.system(self.cmd)def start(port_list:list): def __run(url): time.sleep(10) response = urllib.request.urlopen(url, timeout=5) if str(response.getcode()).startswith('2'): return True for i in range(0, len(port_list)): cmd = 'appium -p %s ' % ( port_list[i]) if platform.system() == 'Windows': # windows下啟動server t1 =RunServer(cmd) p = Process(target=t1.start()) p.start() while True: time.sleep(4) if __run('http://127.0.0.1:' + port_list[i]+ '/wd/hub/status'): breakdef startdevicesApp(): l_devices_list=[] port_list=[] alldevices=get_devices() if len(alldevices)>0: for item in alldevices: port=random.randint(1000,6000) port_list.append(port) desired_caps = { ’platformName’: ’Android’, ’deviceName’: item, ’platformVersion’: getPlatForm(item), ’appPackage’: get_apkname(apk_path), # 包名 ’appActivity’: get_apk_lautc(apk_path), # apk的launcherActivity ’skipServerInstallation’: True, 'port':port } l_devices_list.append(desired_caps) return l_devices_list,port_listdef runcase(devics): #執(zhí)行測試用例 passdef run(deviceslist:list): pool = Pool(len(deviceslist)) for devices in deviceslist: pool.map(runcase, devices) pool.close() pool.join()if __name__=='__main__': l_devices_list,port_list=startdevicesApp() start(port_list) run(l_devices_list)

以上就是python 基于Appium控制多設備并行執(zhí)行的詳細內容,更多關于Appium控制多設備并行執(zhí)行的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 铣床|万能铣床|立式铣床|数控铣床|山东滕州万友机床有限公司 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 自动化改造_智虎机器人_灌装机_贴标机-上海圣起包装机械 | 懂研帝_专业SCI论文润色机构_SCI投稿发表服务公司 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 陕西高职单招-陕西高职分类考试网 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 |