是针对手机一些常用设置功能进行操作的API。

这些API都非常的简单,用的时候直接查询调用就可以了,下面介绍几个非常常用的API。

1、获取当前手机的时间

使用方法:device_time

# 调用方式:
driver.device_time # 输出结果:
2020-12-04T00:02:50+08:00

2、获取手机屏幕的宽和高

获取手机的宽高,可以根据宽高做一些坐标的操作。

使用方法:get_window_size()

# 调用方式:
driver.get_window_size() # 输出结果:
{'width': 720, 'height': 1280}

3、获取手机当前网络

获取手机当前连接的网络信息。

使用方法:network_connection

# 调用方式
driver.network_connection # 输出结果:数字代表网络模式
6

4、设置手机网络模式

更改手机的网络模式。

使用方法:set_network_connection(connectionType)

# 调用方式
driver.set_network_connection(connectionType) # 参数:connectionType # 需要被设置成为的网络类型
"""Sets the network connection type. Android only.
设置网络连接类型。 仅适用于Android。
Possible values: +--------------------+------+------+---------------+
| Value (Alias) | Data | Wifi | Airplane Mode |
+====================+======+======+===============+
| 0 (None) | 0 | 0 | 0 |
+--------------------+------+------+---------------+
| 1 (Airplane Mode) | 0 | 0 | 1 |
+--------------------+------+------+---------------+
| 2 (Wifi only) | 0 | 1 | 0 |
+--------------------+------+------+---------------+
| 4 (Data only) | 1 | 0 | 0 |
+--------------------+------+------+---------------+
| 6 (All network on) | 1 | 1 | 0 |
+--------------------+------+------+---------------+ These are available through the enumeration `appium.webdriver.ConnectionType`
这些可以通过枚举“ appium.webdriver.ConnectionType”获得。
Args:
connection_type: a member of the enum `appium.webdriver.ConnectionType` Return:
int: Set network connection type
返回值是int类型:设置网络连接类型
""" None:没有选择模式
Airplane Mode:飞行模式
Wifi only:仅Wifi
Data only:仅数据
All network on:所有网络均已开启

5、操作手机通知栏

打开手机的通知栏,可以获取通知栏的相关信息和元素操作。

使用方法:open_notifications()

# 调用方式
driver.open_notifications()

6、综合练习

"""
1.学习目标
掌握手机操作中的常用API
2.操作步骤
2.1 获取当前手机的时间
2.2 获取手机屏幕的宽和高
2.3 获取手机当前网络
2.4 设置手机网络模式
2.5 打开手机系统通知栏
3.需求
实现以上功能
""" # 1.导入appium和TouchAction
import time
from appium import webdriver # 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
} # 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 4.操作APP
# 4.1 获取当前手机的时间
date = driver.device_time
# 输出结果:2020-12-04T00:00:22+08:00
print(date) # 4.2 获取手机屏幕的宽和高
size = driver.get_window_size()
# 输出结果:{'width': 720, 'height': 1280}
print(size) # 4.3 获取手机当前网络
network = driver.network_connection
# 输出结果:6
print(network) # 4.4 设置手机网络模式
# 开启飞行模式,
# driver.set_network_connection(1)
# 或者使用枚举类也行
# 引入from appium.webdriver.connectiontype import ConnectionType包
# driver.set_network_connection(ConnectionType.AIRPLANE_MODE)
# 打印手机当前网络模式
# print(driver.network_connection) # 注意:切换网络模式操作会导致电脑与模拟器的链接断开。 # 4.5 打开手机系统通知栏
driver.open_notifications() # 5.关闭APP
time.sleep(3)
driver.quit()

7、发送键到设备(掌握)

模拟系统键值的操作,比如操作home键,音量键,返回键等。

使用方法:keyevent(keycode, metastate=None):

# 调用方式
driver.keyevent(keycode) 参数:
keycode:发送给设备的关键代码。
metastate:关于被发送的关键代码的元信息,一般为默认值。

说明:Android常用keycode键列表如下:

键名 描述 键值
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25
KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键_确定键 23
KEYCODE_DPAD_UP 导航键_向上 19
KEYCODE_DPAD_DOWN 导航键_向下 20
KEYCODE_DPAD_LEFT 导航键_向左 21
KEYCODE_DPAD_RIGHT 导航键_向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页 92
KEYCODE_PAGE_DOWN 向下翻页 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入建 124
KEYCODE_TAB Tab键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK 暂停键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

业务场景:

  1. 打开设置。
  2. 按多次音量增加键。

代码实现:

"""
1.学习目标
掌握发送键到设备
2.操作步骤
发送键到设备:driver.keyevent(keycode)
例如:
音量增大 keycode = 24
音量减小 keycode = 25
3.需求
使用keyevent控制手机音量大小
""" # 1.导入appium和TouchAction
import time
from appium import webdriver # 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
} # 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 4.操作APP
# 4.1 发送键到设备,实现手机音量调节
# 音量增大
for i in range(4):
driver.keyevent(24)
time.sleep(1) # 音量减小
for i in range(2):
driver.keyevent(25)
time.sleep(1) # 5.关闭APP
time.sleep(3)
driver.quit()

8、手机截图(掌握)

截取手机当前屏幕,保存指定格式图片到设定位置。

使用方法:get_screenshot_as_file(filename)

# 调用方式
driver.get_screenshot_as_file(filename) 参数:
filename:指定路径下,指定格式的图片。

业务场景:

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

代码实现:

"""
1.学习目标
掌握appium中手机截图
2.操作步骤
手机截图
driver.get_screenshot_as_file(存储文件的路径+文件名)
图片格式仅支持png格式。
3.需求
实现手机截图功能
""" # 1.导入appium和TouchAction
import time
from appium import webdriver # 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
"platformName": "Android", # 系统名称
"platformVersion": "7.1.2", # 系统版本
"deviceName": "127.0.0.1:21503", # 设备名称
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP启动名
} # 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 4.操作APP
# 手机截图,截图保存当前目录(脚本文件所在的同级目录)
# driver.get_screenshot_as_file("test.jpg") # 写jpg格式日志中会有警告
driver.get_screenshot_as_file("test1.png") # 5.关闭APP
time.sleep(3)
driver.quit()

『与善仁』Appium基础 — 26、常用手机操作的API说明的更多相关文章

  1. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  2. 『与善仁』Appium基础 — 22、获取元素信息的操作(一)

    目录 1.获取元素文本内容 (1)text()方法 (2)get_attribute()方法 (3)综合练习 2.获取元素在屏幕上的坐标 1.获取元素文本内容 (1)text()方法 业务场景: 进入 ...

  3. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

  4. 『与善仁』Appium基础 — 5、常用ADB命令(二)

    目录 9.查看手机运行日志 (1)Android 日志 (2)按级别过滤日志 (3)按 tag 和级别过滤日志 (4)日志格式 (5)清空日志 10.获取APP的包名和启动名 方式一: 方式二: 11 ...

  5. 『与善仁』Appium基础 — 9、补充:C/S架构和B/S架构说明

    目录 1.C/S架构和B/S架构概念 2.C/S结构与B/S架构的区别 3.C/S架构和B/S架构优点和缺点 (1)B/S模式的优点和缺点: (2)C/S模式的优点和缺点: 1.C/S架构和B/S架构 ...

  6. 『与善仁』Appium基础 — 12、Appium的安装详解

    目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...

  7. 『与善仁』Appium基础 — 14、Appium测试环境搭建

    目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...

  8. 『与善仁』Appium基础 — 15、使用Appium的第一个Demo

    我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...

  9. 『与善仁』Appium基础 — 16、APPium基础操作API

    目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...

随机推荐

  1. Atcoder Grand Contest 023 E - Inversions(线段树+扫描线)

    洛谷题面传送门 & Atcoder 题面传送门 毒瘤 jxd 作业-- 首先我们不能直接对所有排列计算贡献对吧,这样复杂度肯定吃不消,因此我们考虑对每两个位置 \(x,y(x<y)\), ...

  2. Codeforces 702F - T-shirts(平衡树+势能分析)

    题面传送门 首先肯定将所有物品排个序. 考虑暴力做法,对于每个询问,枚举所有物品,能买就买.不过扫一眼就知道无法直接优化. 不妨换个角度,暴力做法是枚举询问,这次我们枚举物品.从左到右依次枚举所有物品 ...

  3. Harbour.Space Scholarship Contest 2021-2022 题解

    多好的上分机会啊,要是换个时间(指改在 NOI 之后)我说不定就能上 2500 了(做白日梦 ing) A 签到题不多说,显然只有末尾为 \(9\) 的数是 interesting 的,因此答案就是 ...

  4. Codeforces 1483F - Exam(AC 自动机)

    Codeforces 题目传送门 & 洛谷题目传送门 一道 ACAM 的 hot tea 首先建出 ACAM.考虑枚举长串,以及短串在长串中出现的最后位置 \(j\),这个复杂度显然是 \(\ ...

  5. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  6. mysql—MySQL数据库中10位时间戳转换为标准时间后,如何对标准时间进行加减X天处理

    在这篇的缘由:问题:"FROM_UNIXTIME(timeline,'%Y-%m')"的结果(2020-06)做月份增加1月或者减少1月的计算处理,想着直接在结果上+1但是,结果为 ...

  7. == 和 equals() 方法的区别

    == 在比较基本数据类型时,是比较两边的数据的值是否相等 // 整数类型 int num1 = 1; // 双精度浮点数类型 double num2 = 1.0; // 输出结果为 true Syst ...

  8. day08 文件属性

    day08 系统目录 今日内容 一.重要目录 1./usr 2./var 3./proc 二.文件的属性 1.文件属性的介绍 2.文件属性的详述 3.企业案例 /usr 安装第三方软件的目录: 1./ ...

  9. Spark基础:(三)Spark 键值对操作

    1.pair RDD的简介 Spark为包含键值对类型的RDD提供了一些专有的操作,这些RDD就被称为pair RDD 那么如何创建pair RDD呢? 在不同的语言中有着不同的创建方式 在pytho ...

  10. 【XSS】再谈CSP内容安全策略

    再谈CSP内容安全策略 之前每次都是想的很浅,或者只是个理论派,事实证明就是得动手实践 参考 CSP的用法 官方文档 通过设置属性来告诉浏览器允许加载的资源数据来源.可通过Response响应头来设置 ...