首页 文章 精选 留言 我的

精选列表

搜索[多租户SaaS],共10000篇文章
优秀的个人博客,低调大师

多设备兼容脚本,轻松拿捏

👆对私有云感兴趣可以进入公众号回复“私有云”哦。 一、前言 有比较多同学有提到说能否一个脚本同时适用于Android跟iOS设备,也有同学问是否可以根据不同的Android厂商设备,去执行不同的操作,那么本周,我们一起探讨一下这个问题,如何让一个脚本兼容更多的机型~ 二、如何查询所连接的设备信息 2.1 简单分辨iOS设备与Android设备 我们在连接完设备后,可以通过下方的语句查询到我们所连接设备时使用的类是什么,并将该类的名称返回。 device().__class__.__name__.lower() 在Airtest中,Android设备以及iOS设备所使用的类不同,并以系统名作为类名称,所以我们可以直接通过类的名称将其区分开来。 2.2 分辨不同的Android设备厂商以及设备型号 Android设备厂商比较多,我们可以通过下方的adb命令查询的方式去获取我们所连接的设备的相关信息,我们在控制台输入adb shell,进入linux命令行,再输入下方命令,可以看到有我们所需要的设备信息。 adb shell getprop | grep product 但是我们可以根据自己的需求去进行筛选,如我们这里使用到的设备品牌以及设备型号,分别可以通过下方的方式获取 # 获取设备品牌名adb shell getprop ro.product.brand# 获取设备型号adb shell getprop ro.product.model 在代码中,我们使用 python3 的子进程模块 subprocess 的 subprocess.check_output([],text=True) 方法去执行adb命令,其中 text=True 参数表示返回的输出结果是一个字符串,可以直接使用 # 获取设备品牌brand = subprocess.check_output(['adb','shell','getprop','ro.product.brand'], text=True).strip()# 获取设备型号model = subprocess.check_output(['adb','shell','getprop','ro.product.model'], text=True).strip() 三、分辨iOS设备与Android设备案例 # -*- encoding=utf8 -*-__author__ ="Airtest"fromairtest.core.apiimport*auto_setup(__file__)# 定义Android操作函数defandroid_operate():start_app("com.miui.player")# 打开小米音乐APPsleep(3.0)wait(Template(r"tpl1717383819774.png", record_pos=(-0.196, -0.251), resolution=(1080,2400)))touch(Template(r"tpl1717383706465.png", record_pos=(-0.194, -0.242), resolution=(1080,2400)))sleep(3.0)print("已打开小米的音乐APP了")# 定义iOS操作函数defios_operate():frompoco.drivers.iosimportiosPocopoco = iosPoco()poco("播客").click()# 点击播客sleep(1.0)poco("女性畅聊健康生活方式 轻松温暖治愈日常烦恼").click()# 点击女性畅聊健康生活方式sleep(1.0)print("已打开iphone的播客APP了")if__name__ =="__main__":# 获取连接的设备信息platform = device().__class__.__name__.lower()ifplatform =="android":print("当前设备是Android")# 输出当前设备是Androidsleep(3.0)android_operate()elifplatform =="ios":print("当前设备是iOS")# 输出当前设备是iOSsleep(3.0)ios_operate()else:print("当前设备是未知设备")# 输出当前设备是未知设备 四、Android设备分辨不同厂商型号案例 # -*- encoding=utf8 -*-__author__ ="Airtest"fromairtest.core.apiimport*auto_setup(__file__)importsubprocessdefget_android_device_info():try:# 使用 adb shell getprop 获取设备品牌和型号信息brand = subprocess.check_output(['adb','shell','getprop','ro.product.brand'], text=True).strip()# 获取设备品牌model = subprocess.check_output(['adb','shell','getprop','ro.product.model'], text=True).strip()# 获取设备型号returnbrand, modelexceptExceptionase:# 捕获异常print(f"An error occurred:{e}")returnNone,Nonedefopen_vivo_music():start_app("com.android.bbkmusic")# 打开Vivo音乐APPsleep(3.0)wait(Template(r"tpl1717383100103.png", record_pos=(-0.376, -0.051), resolution=(720,1440)))touch(Template(r"tpl1717383106988.png", record_pos=(-0.375, -0.044), resolution=(720,1440)))sleep(3.0)print("已打开Vivo的i音乐APP了")defopen_xiaomi_music():start_app("com.miui.player")# 打开小米音乐APPsleep(3.0)wait(Template(r"tpl1717383819774.png", record_pos=(-0.196, -0.251), resolution=(1080,2400)))touch(Template(r"tpl1717383706465.png", record_pos=(-0.194, -0.242), resolution=(1080,2400)))sleep(3.0)print("已打开小米的音乐APP了")defopen_huawei_music():start_app("com.android.mediacenter")# 打开华为音乐APPsleep(3.0)wait(Template(r"tpl1717384154362.png", record_pos=(-0.388,0.02), resolution=(1080,2340)))touch(Template(r"tpl1717384181392.png", record_pos=(-0.331,0.439), resolution=(1080,2340)))sleep(3.0)print("已打开华为的音乐APP了")defprint_device_info(brand, model):ifbrandandmodel:print(f"当前设备品牌:{brand}")# 打印当前设备品牌print(f"当前设备型号:{model}")# 打印当前设备型号sleep(3.0)else:print("无法获取设备品牌和型号")# 打印无法获取设备品牌和型号if__name__ =="__main__":# 获取 Android 设备品牌和型号brand, model = get_android_device_info()# 获取设备品牌和型号print_device_info(brand, model)# 将打开各类品牌手机APP写成一个字典music_apps = {"HUAWEI": open_huawei_music,# 打开华为音乐APP"vivo": open_vivo_music,# 打开Vivo音乐APP"Xiaomi": open_xiaomi_music# 打开小米音乐APP}#在获取完设备品牌后,在字典内找到对应的方法并执行music_app = music_apps.get(brand)ifmusic_app:music_app()else:print("没有该型号适用的方法") 五、小结 我们本周推文主要是介绍了如何去分辨所连接的设备是Android设备还是iOS设备,以及如何分辨Android设备的厂商和型号,根据这些方式,我们可以结合自己的需求,进一步优化我们的测试脚本以及编写更具有通用性的脚本。 如果在测试的过程中,遇到了问题,或者有任何想要深入了解的知识点,欢迎在官方交流群(526033840)里告诉我们或者提交issue,也欢迎大家投稿其他不同的使用小技巧。 (猜你还想看 ) ▼ Windows技巧:轻松连接多进程窗口之一 Poco框架实操:对节点可实施的操作 打开、关闭、切换App以及清除App进程,操作so easy! 本文分享自微信公众号 - AirtestProject(AirtestProject)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册