Android自动化测试uiautomator

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a13069730106/article/details/54574838

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的一些基本使用。如果有什么其它的,欢迎留言。

猜你喜欢

转载自blog.csdn.net/a13069730106/article/details/54574838