【学以致用】android功能实现4---UIautomator 2.0(3)

上一部分提到:自动化测试可以简单分为获取测试工具,找到交互目标,进行操作行为,判断操作结果,这4步。并且讲解了前两步UiDevice的初始化,UiObject2UiScrollable的获取。

接来下学习后面2步:

3.进行操作行为:

在上一步,成果获取了UiObject2UiScrollable,分的对应着不用滑动的操作目标和需要滑动的操作目标。

对目标的操作,主要有点击,长按,滑动,拖动。

UiObject2的常用方法是如下:

void clear():清空当前选择区域的文本,用来删除清空


void click():最常用的操作,点击操作。寻找到对应组件,进行点击


void drag(Point dest, int speed)
void drag(Point dest):将目标组件移动到屏幕制定位置,

扫描二维码关注公众号,回复: 2336639 查看本文章

举个实例:

UiObject2 = mDevice.findObject(BySelector);

X.drag(new Point(mDevice.getDisplayWeigth()/2,mDevice.getDisplayHeight/2),200);

就是讲x以自定义的速度,将X移动到手机的正中间。


boolean equals(Object object):判断当前的对象是否是某种对象


boolean fling(Direction direction)
boolean fling(Direction direction, int speed):将目标对象,像某个方法抛出去,用于甩动操作


void longClick():长按目标对象


void pinchClose(float percent, int speed)
void pinchClose(float percent):在目标对象上,进行两指合拢的操作。

以上是比较常用的,还有许多不常用的,不一样举出。从上面的操作可以看出,对于没有对于目标对象进行滑动的操作,特别是进行多次滑动的操作。

正因为如此,UiScrollable的存在开始有必要性了。

UiScrollable最主要的目的是提供滑动操作,

boolean     scrollBackward(int steps)    自定义步长向后滚动

boolean     scrollBackward()             以默认步长55向后滚动

boolean     scrollForward()              以默认步长55向前滚动

boolean     scrollForward(int steps)     自定义步长向前滚动

滑动的时候,不一定一次能够滑动到终点,我们也可以滑动几次。这个功能是UiObject2 实现不了的。

以下是更多的滑动方法:

boolean       scrollIntoView(UiSelector selector) 滚动到条件元素所在位置,并且尽量让其居于屏幕中央

boolean       scrollIntoView(UiObject obj)       滚动到对象所在位置,并且尽量让其居于屏幕中央

boolean       scrollTextIntoView(String text)    滚动到文本对象所在位置,并且尽量让其居于屏幕中央

boolean      scrollDescriptionIntoView(String text)滚动到描述所在位置,并且尽量让其居于屏幕中央

boolean      scrollToBeginning(int maxSwipes)     自定义次数滚动到开始位置

boolean      scrollToBeginning(int maxSwipes,int steps)  自定义次数和步长滚动到开始位置

boolean      scrollToEnd(int maxSwipes,int steps)        自定义次数和步长滚动到结束位置  

boolean      scrollToEnd(int maxSwipes)            自定义次数滚动到结束位置

然后是滑动,滑动和UiObject2 fling有相同之处,但是,对于多次滑动,还是要使用

boolean           flingBackward()             以向后滚动

boolean           flingForward()              向前滚动

boolean           flingToBeginning(int maxSwipe) 滑动到开始位置

boolean           flingToEnd(int maxSwipe)   自滑动到底部位置

在刚开始使用Uiautomator2.0的是,没有特殊必要,建议都使用UiObject2UiObject2能够满足大多数的操作需求,而UiScrollable仅仅是一种特殊情况下的使用,有需要在来查阅使用。

4.判断操作结果

断言,assert

测试的一个要素就是断言,用于判断当前的情况是否满足预设要求。也就是进行完测试的结果和预期的结果是否一致。

能够使用的断言一共有两种

assertTrueassertFalse,正误判断。

assertEqual,一致性判断。

Uiautomator的测试,实际是模仿测试人员手动操作的行为,既然有行为一定会伴随着某种可视的变化。(如果是后台变化,则采用单元测试而不是集成测试,和本文无关)

而断言则是针对变化部分进行分析,看看这个变化是否发生,是否符合我们的预期。

下面用几个简单例子来体会断言的用法。

举两个简单例子抛砖引玉

第一个简单用法是assertTruemDevice.hasObject(BySelect);

就是判断里面是否存在这个对象,如果是删除,那么删除后就不存在了。如果是新生成某个画面或者文字,则可以直接好到该目标对象。

第二个简单用法是assertEqualexpectedTextNumberrealTextNumber ;

这里是,首先获取了一次文版的文字,然后删除,输入我们自己想要的文字。然后检测我们这次输入的想要文字的字数realTextNumber . 同时我们预先就知道我们实际想输入的expectedTextNumber。比较可以得到结果。

如果输入文字的目标对象是正常的,那么本测试通过。如果目标对象有问题,比如只接受字母,不接受数字,但是我们传入文本有数字。那么expectedTextNumberrealTextNumber 不一致,本测试不通过。

以上,Uiautomator一共分为4步:获取测试工具,找到交互目标,进行操作行为,判断操作结果。

按照这个顺序写好即可,实现一个完整的自动化测试。

猜你喜欢

转载自blog.csdn.net/dax120/article/details/78713095