初始化 device
如果设备没有被初始化的话会进行初始化,并把初始化的设备作为当前设备。 用法如下:
1 2 3 4 5 6 7 8 9 |
def init_device(platform="Android", uuid=None, **kwargs): """ Initialize device if not yet, and set as current device. :param platform: Android, IOS or Windows :param uuid: uuid for target device, e.g. serialno for Android, handle for Windows, uuid for iOS :param kwargs: Optional platform specific keyword args, e.g. `cap_method=JAVACAP` for Android :return: device instance """ |
示例如下:
1 2 |
device = init_device('Android') print(device) |
运行结果如下:
1 |
<airtest.core.android.android.Android object at 0x1018f3a58> |
可以发现它返回的是一个 Android 对象。 这个 Android 对象实际上属于 airtest.core.android
这个包,继承自 airtest.core.device.Device
这个类,与之并列的还有 airtest.core.ios.ios.IOS
、airtest.core.linux.linux.Linux
、airtest.core.win.win.Windows
等。这些都有一些针对 Device 操作的 API,下面我们以 airtest.core.android.android.Android
为例来总结一下。
get_default_device:获取默认 device
uuid:获取当前 Device 的 UUID
list_app:列举所有 App
path_app:打印输出某个 App 的完整路径
check_app:检查某个 App 是否在当前设备上
start_app:启动某个 App
start_app_timing:启动某个 App,然后计算时间
stop_app:停止某个 App
clear_app:清空某个 App 的全部数据
install_app:安装某个 App
install_multiple_app:安装多个 App
uninstall_app:卸载某个 App
snapshot:屏幕截图
shell:获取 Adb Shell 执行的结果
keyevent:执行键盘操作
wake:唤醒当前设备
home:点击 HOME 键
text:向设备输入内容
touch:点击屏幕某处的位置
double_click:双击屏幕某处的位置
swipe:滑动屏幕,由一点到另外一点
pinch:手指捏和操作
logcat:日志记录操作
getprop:获取某个特定属性的值
get_ip_address:获取 IP 地址
get_top_activity:获取当前 Activity
get_top_activity_name_and_pid:获取当前 Activity 的名称和进程号
get_top_activity_name:获取当前 Activity 的名称
is_keyboard_shown:判断当前键盘是否出现了
is_locked:设备是否锁定了
unlock:解锁设备
display_info:获取当前显示信息,如屏幕宽高等
get_display_info:同 display_info
get_current_resolution:获取当前设备分辨率
get_render_resolution:获取当前渲染分辨率
start_recording:开始录制
stop_recording:结束录制
adjust_all_screen:调整屏幕适配分辨率
from airtest.core.android import Android
from airtest.core.api import *
import logging
logging.getLogger("airtest").setLevel(logging.WARNING)
"""
变量名后面的冒号是:类型注解,3.6以后加入的,冒号右边是类型,仅仅是注释,有些鸡肋
变量注释的语法:注释变量类型,明确指出变量类型,方便帮助复杂案例中的类型推断。
var: type = value 其实本质上就是 var = value # type就是var期望的类型
类型注释只是一种提示,并非强制的,Python解释器不会去校验value的类型是否真的是type
例如:a: str = 10 这样是没有错的,python解释器在执行时会把a当作int来操作(type(a)——int),不会去校验是否是字符串类型。
"""
device: Android = init_device('Android')
is_locked = device.is_locked()
print(f'is_locked: {is_locked}')
# is_locked:设备是否锁定了
# unlock:解锁设备
if is_locked:
device.unlock()
# wake:唤醒当前设备
device.wake()
# list_app:列举所有 App
app_list = device.list_app()
print(f'app list {app_list}')
# uuid:获取当前 Device 的 UUID
uuid = device.uuid
print(f'uuid {uuid}')
# get_display_info:同 display_info,获取当前显示信息,如屏幕宽高等
display_info = device.get_display_info()
print(f'display info {display_info}')
# get_render_resolution:获取当前渲染分辨率
resolution = device.get_render_resolution()
print(f'resolution {resolution}')
# get_ip_address:获取 IP 地址
ip_address = device.get_ip_address()
print(f'ip address {ip_address}')
# get_top_activity:获取当前 Activity
top_activity = device.get_top_activity()
print(f'top activity {top_activity}')
# is_keyboard_shown:判断当前键盘是否出现了
is_keyboard_shown = device.is_keyboard_shown()
print(f'is keyboard shown {is_keyboard_shown}')
这里我们调用了设备的一些操作方法,获取了一些基本状态,运行结果如下:
/usr/local/bin/python3.7 /Users/shimo/PycharmProjects/shimo/testcase/test_airtest.py
is_locked: False
app list ['com.huawei.scenepack', 'com.huawei.hifolder', 'com.android.cts.priv.ctsshim', 'com.huawei.camera', 'com.huawei.android.tips', 'com.huawei.camerakit.impl', 'com.huawei.synergy', 'com.huawei.android.launcher', '