Android自动化测试uiautomator框架
最近由于工作的需要,接触了一些android端自动化测试的知识,这里把化记录一下,以备不时之需。这里使用的是框架为uiautomator,使用的开发语言为python.这是因为现在大多数的测试框架都支持python,而且在写一些小程序时python要比java好用一些。
初始化手机连接
在使用uiautomator时,需要事先初始化与手机连联,不然怎么操作手机上的应用呢。如果只使用一台手机做测试机,则比较简单,只需要一行代码就可以。
#初始化手机联接
from uiautomator import device as d
如果有多台手机,则需要知道手机的device code,可以使用adb devices查看,python代码如下
from uiautomator import Device
d = Device('014E05DE0F02000E')
确定控件位置
在使用自动化测试框架时,首先需要的是就取到需要操作控件的对象,当然可以直接使用座标进行操作,只是个人认为此种方式比较笨,并不推荐使用此方式。在uiautomator中,有多种方式可以取用控件的对象。
使用 d(text=’文本内容’) 查找控件
使用d(text=’文本内容’)是相对来说比较简单的获取控件的对象的方式,不需要知道源码就可以命名用。详细代码如下
#获取测试按钮
test_btn = d(text='测试按钮')
#打印控件信息(实际使用中不常使用)
print(test_btn.info)
此种方式常用于获取按钮。
使用id获取控件对象
此种方需要开发的支持,或者需要有源码。使用如下。
#查找id为id_edit的控件并写入数据abcdefg
d(resourceId="com.autotest.demo:id/id_edit").set_text("abcdefg")
print(test_btn.info)
常用操作
上面讲到了获取控件的一些方式,这里就来说一些对控件的具体操作。其实在实际的使用中,对控件的使用不外乎点击、长按、输入、滑动这几种。这里先介绍前三种
点击、长按、输入
test_btn = d(text='测试按钮')
#单击事件
test_btn.click()
#长按事件
test_btn.long_click()
#此处为输入操作
d(resourceId="com.autotest.demo:id/id_edit").set_text("abcdefg")
滑动操作
滑动操作相对于前几种操作,相对来说比较复杂,所在单独拿出来介绍。滑动用于模拟用户的手势操作。比如向左拉开抽屉,下接刷新,手势解锁等。这里可大至分为两大类,
- 两点间的滑动,如下拉刷新
- 多点间的滑动,如手势解锁
如果只是两点间的滑动,可以使用swipe方法,如果多点的滑动,则需要命名用swipePoints方法,说细请查年以下代码。
#两点的xy坐标,只能画直线
d.swipe(100, 800, 600, 800)
#用于模拟复杂的手势操作,
points = []
points.append([100,800])
points.append([200,800])
points.append([200,1100])
points.append([600,1100])
d.swipePoints(points)
特别是在使用swipePoints时,这里是一个在坑的,那是就在方法的参数来看是需要传一个points的集合,就本能的认为应该是point对象的集合,在引用进还真方法有个对象,于是我的代码就变成这样了
from uiautomator import device as d
from uiautomator import point
points = []
points.append(point(100, 800))
points.append(point(200, 800))
points.append(point(200, 1100))
points.append(point(600, 1100))
d.swipePoints(points)
结果报错了,纠结了好长时间,后来看了一个源码才知道,他需要的并不是point,是只单纯的表示一个点x,y的坐标的数组。
总结
以上就是关于uiautomator的一些基本使用。如果有什么其它的,欢迎留言。