news 2026/4/3 3:45:59

appium怎样连接多台设备

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
appium怎样连接多台设备

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

我们在做app自动化的时候,若要考虑兼容性问题,需要跑几台设备,要是一台一台的跑比较耗时,因此需要考虑使用多线程来同时操作多台设备。

1.我们拿两台设备来模拟操作下,使用:adb devices查看连接状况,获取到设备名称。

2.获取需要操作app的包名和页面名称(前提该设备已经打开了app)

3.设置初始配置信息

from appium import webdriver import threading # 设备一 def run_01(): desired = { "platformName": "Android", # 手机系统 "platformVersion": "7.1.2", # 手机系统版本 "deviceName": '127.0.0.1:62001', # 连接的设备(adb devices) "automationName": "UiAutomator2", "appPackage": "", # app包名 "appActivity": "", # app的启动页面 "autoGrantPermissions": "true", # 默认允许app获取相关权限 "noReset": True # 保留登录模式 } driver_01 = webdriver.Remote(command_executor="http://127.0.0.1:4723/wd/hub", desired_capabilities=desired) # driver(driver_01) # 设备二 def run_02(): desired = { "platformName": "Android", # 手机系统 "platformVersion": "11", # 手机系统版本 "deviceName": '90bf8faf', # 连接的设备(adb devices) "automationName": "UiAutomator2", # 自动化测试框架 (1.4以上的appium不用写) "appPackage": "", # app包名 "appActivity": "", # app的启动页面 "autoGrantPermissions": "true", # 默认允许app获取相关权限 "noReset": True # 保留登录模式 } driver_02 = webdriver.Remote(command_executor="http://127.0.0.1:4720/wd/hub", desired_capabilities=desired) # driver(driver_02)

不同的设备启动配置端口号是不一样的,我这里一个是4723,一个是4720.

4.打开页面后操作元素,这里只简单的关闭页面(具体方法可参考:https://www.cnblogs.com/lihongtaoya/p/16988855.html)

def driver(drivers): # 元素操作方法 time.sleep(5) drivers.quit()

5.使用多线程运行多台设备

if __name__ == '__main__': threading.Thread(target=run_01).start() threading.Thread(target=run_02).start()

6.启动appium服务

启动指令:appium --allow-cors -p 端口号 -U 设备名称

我这边是两台设备,因此需要启动两个服务,启动完之后就可以运行main函数了。

7.以上实例是将配置信息写在了代码中,若是有十几二十几台设备的话,这种写法有点麻烦,我们可以将配置信息的产生封装在json文件中使用时用load()方法去取参数即可。

1)创建一个json文件存放配置信息

[{ "url": "http://127.0.0.1:4723/wd/hub", "desired": { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "127.0.0.1:62001", "automationName": "UiAutomator2", "appPackage": "", "appActivity": "", "autoGrantPermissions": "true", "noReset": true} }, { "url": "http://127.0.0.1:4720/wd/hub", "desired":{ "platformName": "Android", "platformVersion": "11", "deviceName": "90bf8faf", "automationName": "UiAutomator2", "appPackage": "", "appActivity": "", "autoGrantPermissions": "true", "noReset": true} }]

2)读取配置信息,这里直接贴完整代码了。

def test_run(url, desired): driver_02 = webdriver.Remote(command_executor=url, desired_capabilities=desired) driver(driver_02) def driver(drivers): # 元素操作方法 time.sleep(5) drivers.quit() if __name__ == '__main__': with open("./appium.json", mode="r", encoding="utf-8") as f: data = list(json.load(f)) for i in range(0, len(data)): a = threading.Thread(target=test_run, args=(data[i]["url"], data[i]["desired"])) a.start()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 3:02:45

高新 学区 学校

单纯为学区房买单 有时候 也会落空, 因为每年都会调整学区1.高新一中初级中学 对应的高中就是 西安高新第一中学高中部 两个距离很近 都在甘家寨附近 2.高新第二初级中学 在创汇社区 成立于2018年9月 2024年中高考成绩稳居高新区初高中“第一方阵”,普高升学率9…

作者头像 李华
网站建设 2026/3/26 17:21:26

新手必看|如何在期刊上发表论文?实操干货+避坑指南

写论文难,发表期刊更难——这大概是所有学生、刚入门的研究人员的共同心声吧?我当初准备期刊发表时,踩过的坑能装一箩筐:大纲搭不好,写着写着就跑偏;参考文献找了几十篇,要么不贴合主题&#xf…

作者头像 李华
网站建设 2026/4/2 15:57:52

好写作AI:当“意识流”艺术写作,遇见“结构化”AI队友

你的艺术评论初稿,导师批注:“很有灵气,但读起来像深夜朋友圈小作文。”——别慌,这或许是你离一篇既先锋又严谨的艺术理论文章,最近的一次。 深夜的画室或宿舍,你刚写完一段对当代装置艺术的澎湃感悟&…

作者头像 李华
网站建设 2026/3/13 5:58:13

AI智能证件照制作系统源码,功能亮点与高效应用全列表

温馨提示:文末有资源获取方式在快节奏的现代生活中,证件照制作常让人头疼——耗时、昂贵且不便。但如今,一款基于人工智能的证件照在线制作系统源码彻底改变了这一局面。它集创新技术、用户友好设计和广泛适应性于一身,成为个人和…

作者头像 李华
网站建设 2026/3/26 7:15:05

导师推荐!专科生必用TOP8 AI论文软件测评

导师推荐!专科生必用TOP8 AI论文软件测评 2026年专科生论文写作工具测评:为何需要这份榜单? 随着AI技术的不断发展,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅满目的论文辅助软件&#x…

作者头像 李华