手机操作API
手机操作API
获取手机分辨率
应用场景
自动化测试可能会需要根据当前设备的屏幕分辨率来计算一些点击或者滑动的坐标
核心代码
#获取手机分辨率
print(driver.get_window_size())
执行结果
'width': 900, 'height': 1600
手机截图
应用场景
有些自动化的操作可能没有反应,但并不报错。此时我们就可以将操作过后的关键情况,截图留存。后期也可以根据图片发现问题。
方法名
#获取手机截图
#参数:
#filename:指定路径下,指定格式的图片
get_screenshot_as_file(filename)
示例
1.打开设置页面
2.截图当前页面保存到当前目录,命名为1.png
核心代码
driver.get_screenshot_as_file('1.png')
执行结果
项目目录下会多出一个文件1.png
获取和设置手机网络
应用场景
视频应用在使用流量看视频的时候,大部分都会提示用户正在是否继续播放。作为测试人员,我们可能需要用自动化的形式来判断是否有对应的提示。即,用流量的时候应该有提示,不用流量的时候应该没有提示。
属性名
#获取手机网络
driver.network_connection
#设置手机网络
driver.set_network_connection(6)
Demo
#判断当前系统使用的网络类型是否为流量,如果是,输出1;否则,输出0
#导包:from appium.webdriver.connectiontype import ConnectionType
#注意:建议使用系统提供的类型,可读性更强;不建议使用4替代
if driver.network_connection == ConnectionType.DATA_ONLY:
print(1)
else:
print(0)
发送键到设备
应用场景
模拟按“返回键”“home键”等等操作,比如,很多应用有按两次返回键退出应用的功能,如果这个功能需要做自动化,那么一定会用到这个方法
方法名
#发送键到设备
#参数:
#keycode:发送给设备的关键代码
#metastate:关于被发送的关键代码的元信息,一般为默认值
driver.press_keycode(keycode, metastate=None)
注意点
按键对应的编码,可以在百度搜索关键字“android keycode”
例如:https://blog.csdn.net/feizhixuan46789/article/details/16801429
核心代码
#点击三次音量加,再点击返回,再点击两次音量减
driver.press_keycode(24)
driver.press_keycode(24)
driver.press_keycode(24)
driver.press_keycode(4)
driver.press_keycode(25)
driver.press_keycode(25)
操作手机通知栏
应用场景
测试即时通信类软件的时候,如果A给B发送一条消息,B的通知栏肯定会显示对应的消息。我们想通过通知栏来判断B是否收到消息,一定要先操作手机的通知栏
方法名
#打开手机通知栏
driver.open_notifications()
注意点
appium官方并没有为我们提供关闭通知的api,那么现实生活中怎么关闭,怎样操作就行,比如,手指从下往上滑动,或者,按返回键
核心代码
#打开通知栏
driver.open_notifications()
#按下返回键
driver.press_keycode(4)
总结
-
获取手机分辨率
- 关键属性:get_window_size()
-
获取手机截图
- 关键属性:get_screenshot_as_file(filename)
-
获取手机网络
- 关键属性:network_connection
-
设置手机网络
- 关键属性:set_network_connection(6)
-
发送键到设备
- 关键属性:press_keycode(keycode, metastate=None)
-
打开手机通知栏
- 关键属性:open_notifications()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)