背景

openatx/uiautomator2提供了 Android 原生应用的自动化测试功能,经过了很长时间的发展,提供的基础功能已经足够多,但是依然还有很多特殊的需求不能直接满足,需要用户再多封装一下才可以。
为了更方便的使用 uiautomator2,这里引入的插件机制。

不了解 openatx/uiautomator2 的可以先看一下这篇文章ATX-给大家介绍一下 uiautomator2 这个项目

从零开始教你写插件

一般的 app 刚启动的时候会有引导界面,需要不停的向左滑动才可以,下面我们就来实现这个功能。

左滑功能

在没有插件前

import uiautomator2 as u2

def swipe_left(d):
    d.swipe(0.9, 0.5, 0.1, 0.5) # swipe x(90%) -> x(10%)

d = u2.connect()
swipe_left(d)

使用插件方式重写

import uiautomator2 as u2

class Swipe(object):
    def __init__(self, d):
        self.d = d

    def left(self):
        self.d.swipe(0.9, 0.5, 0.1, 0.5)

u2.plugin_register("swipe", Swipe)

d = u2.connect()
d.ext_swipe.left()

是不是感觉使用插件的方式代码反而变长了,然而这种方式带来的改进是,所有的功能都能全部通过d这个实例来访问,加上插件的代码可以转移到其他文件中,整个代码就会变得很整洁。

之后如果有其他的需求,只需要扩充插件的函数就可以实现

d.ext_swipe.right() # 右滑
d.ext_swipe.up() # 上滑
d.ext_swipe.down() # 下滑

官方参考例子:
目前这个库自带了一个采集性能的插件,欢迎围观perf plugin

关于插件更详细的使用方法,参考这里https://github.com/openatx/uiautomator2#plugin-beta

想到的但是还没实现的插件

后记

一个人的精力毕竟有限,不可能把一个工具打造的特别完美, 但是有了插件就不同了,很多人一起贡献,感觉即使再难实现的功能也能用插件堆出来
欢迎留言讨论 _^


↙↙↙阅读原文可查看相关链接,并与作者交流