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
d.ext_screenrecord.start(); .... ; d.ext_screenrecord.stop()
d.ext_logcat.start(output='logcat.txt'); ... ; d.ext_logcat.stop()
d.ext_wifi.on(); d.ext_wifi.off()
一个人的精力毕竟有限,不可能把一个工具打造的特别完美, 但是有了插件就不同了,很多人一起贡献,感觉即使再难实现的功能也能用插件堆出来
欢迎留言讨论 _^