移动端测试——手机常见操作的API (5)
appium基础API
1.1 常用的手机操作API
针对手机的一些常用设置功能进行操作
- 前置代码
# 导入driver对象
from appium import webdriver
import time
# server 启动参数
desired_caps = {}
# 设备信息(系统、版本、设备号)
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = '192.168.72.103:5555'
# app信息(包名、启动名)
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 声明driver对象
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
try:
pass
except Exception as e:
print(e)
finally:
# 关闭驱动对象
driver.quit()
1.1.1 获取手机时间
方法:device_time
# 获取当前手机的时间
print(driver.device_time)
1.1.2 获取手机的宽高
获取手机的宽高,可以根据宽高做一些坐标的操作
方法:get_window_size()
print(driver.get_window_size())
eg:
phone_size = driver.get_window_size()
x = phone_size.get("width")/2
y_0 = 2*phone_size.get("height")/3
y_1 = phone_size.get("height")/3
driver.swipe(x, y_0, x, y_1,3000)
1.1.3 发送键到设备
模拟系统键值的操作,比如操作honme键,音量键,返回键等。
方法:keyevent(keycode, metastate=None)
参数 | 说明 |
---|---|
keycode |
发送给设备的关键代码 |
metastate |
关于被发送的关键代码的元信息,一般为默认值 |
eg(业务场景):
打开设置,按多次音量增加键
for i in range(3):
driver.keyevent(24)
- 常用键
元信息 | 名称 | 关键代码 |
---|---|---|
KEYCODE_HOME |
按键Home | 3 |
KEYCODE_BACK |
返回键 | 4 |
KEYCODE_CALL |
拨号键 | 5 |
KEYCODE_ENDCALL |
挂机键 | 6 |
KEYCODE_DPAD_UP |
导航键 向上 | 19 |
KEYCODE_DPAD_DOWN |
导航键 向下 | 20 |
KEYCODE_DPAD_LEFT |
导航键 向左 | 21 |
KEYCODE_DPAD_RIGHT |
导航键 向右 | 22 |
KEYCODE_DPAD_CENTER |
导航键 确定键 | 23 |
KEYCODE_VOLUME_UP |
音量 增加键 | 24 |
KEYCODE_VOLUME_DOWN |
音量 减小键 | 25 |
KEYCODE_POWER |
电源键 | 26 |
KEYCODE_CAMERA |
拍照键 | 27 |
KEYCODE_TAB |
Tab键 | 61 |
KEYCODE_ENTER |
回车键 | 66 |
KEYCODE_DEL |
退格键 | 67 |
KEYCODE_FOCUS |
拍照对焦键 | 80 |
KEYCODE_MENU |
菜单键 | 82 |
KEYCODE_NOTIFICATION |
通知键 | 83 |
KEYCODE_SEARCH |
搜索键 | 84 |
KEYCODE_MUTE |
话筒静音键 | 91 |
KEYCODE_PAGE_UP |
向上翻页键 | 92 |
KEYCODE_PAGE_DOWN |
向下翻页键 | 93 |
KEYCODE_ESCAPE |
ESC键 | 111 |
KEYCODE_FORWARD_DEL |
删除键 | 112 |
KEYCODE_CAPS_LOCK |
大写锁定键 | 115 |
KEYCODE_SCROLL_LOCK |
滚动锁定键 | 116 |
KEYCODE_BREAK |
Break/Pause键 | 121 |
KEYCODE_MOVE_HOME |
光标移动到开始键 | 122 |
KEYCODE_MOVE_END |
光标移动到末尾键 | 123 |
KEYCODE_INSERT |
插入键 | 124 |
KEYCODE_NUM_LOCK |
小键盘锁 | 143 |
KEYCODE_VOLUME_MUTE |
扬声器静音键 | 164 |
KEYCODE_ZOOM_IN |
放大键 | 168 |
KEYCODE_ZOOM_OUT |
缩小键 | 169 |
KEYCODE_ALT_LEFT |
Alt+Left | |
KEYCODE_ALT_RIGHT |
Alt+Right | |
KEYCODE_CTRL_LEFT |
Control+Left | |
KEYCODE_CTRL_RIGHT |
Control+Right | |
KEYCODE_SHIFT_LEFT |
Shift+Left | |
KEYCODE_SHIFT_RIGHT |
Shift+Right |
参阅:
1.1.4 操作手机通知栏
打开手机的通知栏,可以获取通知栏的相关信息和元素操作
方法:open_notifications()
eg(业务场景):
启动设置,打开通知栏,2秒后,返回主页
driver.open_notifications()
time.sleep(2)
driver.keyevent(3)
eg:
1.1.5 获取手机当前网络
获取手机当前连接的网络
方法:network_connection
eg(业务场景):
获取手机当前网络模式
print(driver.network_connection)
1.1.6 设置手机网络
更改手机的网络模式,模拟特殊网络情况下的测试用例
方法:set_network_connection(connectionType)
参数 | 说明 |
---|---|
connectionType |
需要被设置成为的网络类型 |
eg(业务场景):
启动设置,设置手机网络为飞行模式
driver.set_network_connection(1)
1.3.8 手机截图
截取手机当前屏幕,保存指定格式图片到设定位置
方法:get_screenshot_as_file(filename)
参数 | 说明 |
---|---|
filename |
指定路径下,指定格式的图片. |
eg(业务场景):
打开设置页面,截图当前页面保存到当前目录,命名为screen.png
import os
driver.get_screenshot_as_file(os.getcwd() + os.sep + './screen.png')
执行结果:
当前目录下会生成screen.png文件
更新中......