学习目标

  1. 能够获取手机分辨率
  2. 能够获取手机截图
  3. 能够获取和设置网络状态
  4. 能够发送键到设备
  5. 能够打开和关闭手机通知栏

一. 手机操作API

1.1 获取手机分辨率【掌握】

应用场景
自动化测试可能会需要根据当前设备的屏幕分辨率来计算一些点击或者滑动的坐标

方法名

# 获取手机分辨率
driver.get_window_size()

示例

输出当前设备的屏幕分辨率

核心代码

print(driver.get_window_size())

执行结果

{‘height’: 800, ‘width’: 480}

1.2 手机截图【掌握】

应用场景
有些自动化的操作可能没有反应,但并不报错。此时我们就可以将操作过后的关键情况,截图留存。后期也可以根据图片发现问题。

方法名

# 获取手机分辨率
# 参数:
# filename:指定路径下,指定格式的图片
get_screenshot_as_file(filename)

示例

  1. 打开设置页面
  2. 截图当前页面保存到当前目录,命名为screen.png

核心代码

driver.get_screenshot_as_file(os.getcwd() + os.sep + './screen.png')

执行效果

项目目录下会将设置页面保存成 screen.png

1.3 获取和设置手机网络【掌握】

应用场景
视频应用在使用流量看视频的时候,大部分都会提示用户正在是否继续播放。作为测试人员,我们可能需要用自动化的形式来判断是否有对应的提示。即,用流量的时候应该有提示,不用流量的时候应该没有提示。

1.3.1 获取手机网络

属性名

# 获取手机网络
driver.network_connection

示例

获取当前网络类型,并打印

核心代码

print(driver.network_connection)

执行结果

6

结果对照
在这里插入图片描述
1.3.2 设置手机网络

方法名

# 设置手机网络
# 参数:
# connectionType:网络类型
driver.set_network_connection(connectionType)

示例

设置当前设备为飞行模式

核心代码

driver.set_network_connection(1)

执行效果

设备变为飞行模式

1.4 发送键到设备【掌握】

应用场景
模拟按 “返回键” “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)

1.5 操作手机通知栏【掌握】

应用场景
测试即时通信类软件的时候,如果 A 给 B 发送一条消息,B 的通知栏肯定会显示对应的消息。我们想通过通知栏来判断 B 是否收到消息,一定要先操作手机的通知栏
方法名

# 打开手机通知栏
driver.open_notifications()

注意点

appium官方并没有为我们提供关闭通知的api,那么现实生活中怎么关闭,就怎样操作就行,比 如,手指从下往上滑动,或者,按返回键

示例

打开通知栏,两秒后,关闭通知栏

核心代码

driver.open_notifications()
time.sleep(2)
driver.press_keycode(4)
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐