『与善仁』Appium基础 — 26、常用手机操作的API说明
是针对手机一些常用设置功能进行操作的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.操作步骤
发送键到设备: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:指定路径下,指定格式的图片。
业务场景:
- 打开设置界面。
- 截图当前界面保存到当前目录,命名为
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说明的更多相关文章
- 『与善仁』Appium基础 — 10、Appium基本原理
目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...
- 『与善仁』Appium基础 — 22、获取元素信息的操作(一)
目录 1.获取元素文本内容 (1)text()方法 (2)get_attribute()方法 (3)综合练习 2.获取元素在屏幕上的坐标 1.获取元素文本内容 (1)text()方法 业务场景: 进入 ...
- 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍
目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...
- 『与善仁』Appium基础 — 5、常用ADB命令(二)
目录 9.查看手机运行日志 (1)Android 日志 (2)按级别过滤日志 (3)按 tag 和级别过滤日志 (4)日志格式 (5)清空日志 10.获取APP的包名和启动名 方式一: 方式二: 11 ...
- 『与善仁』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架构 ...
- 『与善仁』Appium基础 — 12、Appium的安装详解
目录 (一)Appium server安装 方式一:(桌面方式:推荐) 1.Appium Desktop下载 2.Appium Desktop安装 3.Appium Desktop使用 方式二:(No ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...
- 『与善仁』Appium基础 — 15、使用Appium的第一个Demo
我们使用Python语言作为测试脚本的编写语言. 执行脚本前提: Android模拟器或者手机是开机状态. 使用确保电脑和Android设备进行了链接. 也就是使用ADB命令adb connect链接 ...
- 『与善仁』Appium基础 — 16、APPium基础操作API
目录 1.前置代码 2.安装和卸载APP 3.判断APP是否已安装 4.关闭APP软件和关闭驱动对象 5.发送文件到手机和获取手机中的文件 6.获取当前屏幕内元素结构(重点) 7.脚本内启动其他APP ...
随机推荐
- CF1278F Cards
CF1278F Cards 首先我们知道,一次拿牌的概率是 $ P(i) = \frac 1 m $ ,同时权值是1,所以期望就是 $ \frac{1} m $,拿 $ n $ 次牌贡献是独立的,就是 ...
- 洛谷 P3688 - [ZJOI2017]树状数组(二维线段树+标记永久化)
题面传送门 首先学过树状数组的应该都知道,将树状数组方向写反等价于前缀和 \(\to\) 后缀和,因此题目中伪代码的区间求和实质上是 \(sum[l-1...n]-sum[r...n]=sum[l-1 ...
- 洛谷 P4094 [HEOI2016/TJOI2016]字符串(SA+主席树)
题面传送门 一道码农题---- u1s1 感觉这类题目都挺套路的,就挑个有代表性的题写一篇题解罢. 首先注意到答案满足可二分性,故考虑二分答案 \(mid\),转化为判定性问题. 考虑怎样检验 \(m ...
- 【MetDNA】基于代谢反应网络的大规模代谢物结构鉴定新算法
代谢是生命体内化学反应的总称,其所包含的代谢物变化规律可直接反映生命体的健康状态.非靶向代谢组学(untargeted metabolomics)可以在系统水平测量生命体内生理或病理状态下所有代谢物的 ...
- R 语言 select函数在org.Hs.eg.db上的运用
首先org.Hs.eg.db是一个关于人类的 一,在R中导入包library(org.Hs.eg.db) http://www.bioconductor.org/packages/release/da ...
- SQLite is 35% Faster Than The Filesystem
比方说你要在C++/PHP里实现一个函数Image get_image(string id),不同的图片有1万张(用户头像),你可以把它们存在一个目录/文件夹里,然后fopen()再fread. 你也 ...
- absent, absolute, absorb
absent Absenteeism is a habitual [习惯性的] pattern of absence from a duty or obligation [职责] without go ...
- day14 linux三剑客之sed命令
day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...
- ubuntu18.10搜狗输入法的安装
记录一下 1.卸载ibus ubuntu默认使用ibus管理输入法,官方推荐使用fcitx.我们先卸载ibus sudo apt-get remove ibus 清除ibus配置,如果没有设置 sud ...
- 强化学习实战 | 表格型Q-Learning玩井字棋(二)
在 强化学习实战 | 表格型Q-Learning玩井字棋(一)中,我们构建了以Game() 和 Agent() 类为基础的框架,本篇我们要让agent不断对弈,维护Q表格,提升棋力.那么我们先来盘算一 ...