这个Python库是基于Android自带的uiautomator测试框架的一个python封包。适用于Android 4.1以上版本,需要通过adb连接Android设备。
from uiautomator import device as d
d . screen.on()
d(text="Clock").click()
安装
pip install uiautomator
前置条件
安装 Android的SDK,设置Android_home环境以正确的路径。
启动 adb 并且通过usb数据线将电脑与Android设备相连接。
设置Android设备,在开发者选项中允许未知来源应用安装。
导入uiautomator
如果仅有一台设备或在 Android_serial 环境变量中配置。
from uiautomator import device as d
通过设备的设备ID来确定设备对象:
from uiautomator import Device
d=Device('014E05DE0F02000E')
通过其他计算机的端口及连接运行adb服务
虽然 adb 支持sdk 4.3的 -a选项 ,但是现在它有问题。在所有非本地服务上启动adb监听服务使用
adb -a -P 5037 fork-server server &
from uiautomator import Device
d=Device('014E05DE0F02000E', adb_server_host='192.168.1.68', adb_server_port=5037)
注:在下面的例子中,我们使用d代表Android设备对象。
基本API用法
此部分通过一些简单的示例显示设备的正常操作。
检索设备信息
d.info
以下是我这里得到的信息:
{u'displayRotation': 0,
u'displaySizeDpY': 640,
u'displaySizeDpX': 360,
u'currentPackageName': u'com.android.launcher',
u'productName': u'takju',
u'displayWidth': 720,
u'sdkInt': 18,
u'displayHeight': 1184,
u'naturalOrientation': True
}
设备的关键时间操作
打开/关闭屏幕
#在屏幕上打开
d.screen.on()
#关闭屏幕
d.screen.off()
替代方法是:
#唤醒设备
d.wakeup()
#睡眠设备,一样关闭屏幕。
d.sleep()
按硬/软键
#按home键
d.press.home()
#按返回键
d.press.back()
#正常的方式按返回键
d.press( “back”)
#按下键码0×07(‘0’)与ALT (0X02)
d.press(0x07,0X02)
目前下列按键支持上述方法
home
back
left
right
home
back
left
right
up
down
center
menu
search
enter
delete(or del)
recent(recent apps)
volume_up
volume_down
volume_mute
camera
power
down
center
menu
search
enter
delete(or del)
recent(recent apps)
volume_up
volume_down
volume_mute
camera
power
在设备上模拟手势交互
#点击屏幕
# click (x, y) on screen
d.click(x, y)
#长按屏幕
# long click (x, y) on screen
d.long_click(x, y)
滑动
# swipe from (sx, sy) to (ex, ey)
#从sx,sy坐标滑动至ex,ey坐标
d.swipe(sx, sy, ex, ey)
# swipe from (sx, sy) to (ex, ey) with 10 steps
d.swipe(sx, sy, ex, ey, steps=10)
拖动
# drag from (sx, sy) to (ex, ey)
d.drag(sx, sy, ex, ey)
# drag from (sx, sy) to (ex, ey) with 10 steps
d.drag(sx, sy, ex, ey, steps=10)
设备屏幕的事件
有以下几种属性:
natural 或者 n 代替
left 或者 l 代替
right 或者 r 代替
upsidedown或 u(不能设定)
#获取orientation(方向),可能是上述中的任意一种
orientation = d.orientation
#设置定向和冻结旋转。
#说明:"upsidedown"不能用于Android 4.3 以前的版本
d.orientation="l"
d.orientation="r"
d.orientation="n"
锁定/解除旋转
#锁定旋转
d.freeze rotation()
#解除旋转锁定
d.freeze_rotation(False)
屏幕截图
获取屏幕截图并且将其存本机地址中,命名为home.png,不能被用于Android 4.2以前的版本
d.screenshot("home.png")
将屏幕结构储存(就是使用uiautomatorviewer看到的那个结构,以xml格式保存)
#将当前屏幕结构保存在本机并命名为"heiera