文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python基于Appium控制多设备并行执行的示例

2023-06-14 05:36

关注

小编给大家分享一下python基于Appium控制多设备并行执行的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

实现篇

  首先实现对应的参数篇和对应的设备端口,

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

我们开启服务了,接下来,我们怎样根据不同进程执行测试用例。

def runcase(devics): #执行测试用例 passdef run(deviceslist:list): pool = Pool(len(deviceslist)) for i in deviceslist:  pool.map(runcase, i) pool.close() pool.join()

  接下来,就是我们去组合形成最后的执行的代码。

    最终代码展示

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): #执行测试用例 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控制多设备并行执行的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯