Appium基础 — 常用⼿机操作的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按键Home3
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_ESCAPEESC键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_TABTab键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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值