比appium更简单的app测试工具!

发布于 更新于

技术文章

在app测试的蛮荒时代,如果要进行app自动化测试非常麻烦。张大胖如果想做安卓自动化测试,首先必须要学Java。因为安卓自动化测试都绕不开google自己研发的自动化测试框架,于是张大胖哼哧哼哧开始学java,开始上手UiAutomator...

在app测试的蛮荒时代,如果要进行app自动化测试非常麻烦。


张大胖如果想做安卓自动化测试,首先必须要学Java。


因为安卓自动化测试都绕不开google自己研发的自动化测试框架,于是张大胖哼哧哼哧开始学java,开始上手UiAutomator做自动化测试。


2周过去了,张大胖开始向王哥抱怨:




王哥一看他的代码,demo都还没跑起来,再让他玩下去,公司都倒闭了。


于是王哥给张大胖推荐了一个工具叫appium, 这个工具强就强在跨平台,跨语言,还开源。


张大胖之前学过半个月python, 搞这个问题应该不大。


过了一天,张大胖果然兴冲冲的跑过来,高兴的说流程跑通了。


appium这玩意真不错,就是有一个不好的地方,通过代码查找app上的元素经常要嵌套 java 代码,而且要带上一长串的设备信息。


王哥又给张大胖推荐了一个工具,这个工具叫python uiautomator。


它可以在手机上装一个http rpc服务,你可以通过其他语言作为客户端去远程调用uiautomator的接口。


这个库解决了原始uiautomator的2个问题:


◆ 必须要会Java代码


◆ 脚本要传到设备上才能运行


他的原理图类似于这样:




而相比appium,这个工具封装的api更加简洁,使用起来更加高效。


张大胖马上回去研究了一下,15分钟就把流程跑通了,当天就请王哥搓了顿小龙虾。


有了这么好用的工具,张大胖赶紧回来写笔记。 


安装


安装不要太简单,一行命令搞定。


相比appium要装的各种依赖,简直不要太幸福。


安装好以后,连接手机,输入adb devices指令,确认手机连接成功,轻松完成。




快速使用


手工怎么测,这个工具的流程完全一样,省心省力,一行多余的代码都没有。


而使用appium的时候,张大胖为了写长长的desired capabilities不知消耗了多少脑细胞。


1, 连接设备;2, 启动app;3, 元素定位;4,元素操作;5,关闭 app。




相同版本的 appium 代码,对比了解一下:


from appium.webdriver import Remote


caps = {

    "platformName": "Android",

    "platformVersion": "5.1",

    "deviceName": "Android Emulator",

    # "app": r"D:\Program Files\adt-bundle-windows-x86_64-20140702\sdk\build-tools\28.0.3\Future-release-2018.apk.apk",

    "appActivity": "com.lemon.lemonban.activity.addition.WelcomeActivity",

    "appPackage": "com.lemon.lemonbano",

    "noReset": "False",

}

# 连接手机

driver = Remote(desired_capabilities=caps)

# 定位

my = driver.find_element_by_id('com.lemon.lemonban:id/navigation_my')

my.click()

# 退出

driver.quit()


做一个简单的对比, python版的uiautomator具有如下优势:


◆ 连接手机的时候可以省去大段信息


◆ 元素定位直接采用更加优雅的 __call__() 机制,不需要调函数名称,而是通过关键字参数的形式直接完成元素定位。


◆ 将app作为一个管理单元(session),会有更大的灵活性。


◆ 这里还不包括更加灵活的等待和watcher机制。


元素定位


使用weditor工具查看元素定位:


为了更加方便的进行元素定位,可以使用weditor辅助获取元素定位表达式,如果不想用,也可以用uiautomatorviewer等原生安卓辅助工具。


安装weditor, 你懂的pip install weditor。


安装完成后命令行输入weditor一键启动,直接弹出图形化界面。




weditor的优势在于:


◆ 可以同时管理多个设备;


◆ 直接在调试界面操作手机,不需要另一只手去动手机;


◆ 自动生成uiautotor代码。


总结


本篇介绍了非常简单的uiautomator使用,总结一下它的优势:


◆ 不用会 java, 也可以体验原生测试的“快”感;


◆ api封装异常简单,符合python的优雅性格;


◆ 上手迅速,略懂python,就可以玩转。


不聊了,这么好用的工具,我要赶紧回去吃透它。


本文由柠檬班雨泽老师原创,转载需注明出处! 


继续阅读