一:环境准备 硬件设备:windows电脑 软件:pycharm蓝叠或闪电模拟器SDKmanager 闪电模拟器下载链接:https:www。ldmnq。com?n6000bdvid11623493887955105097 二:自动化脚本编写前需要掌握的基础python基础变量变量常用的数据类型(字符串intdictlist)的声明和调用,以及数据了类型间的转换函数(带参函数不带参函数有返回值没有返回返回值)的声明与调用开源库的安装、调用判断语句与for循环2。常用的adb命令 (1)查看已连接的设备列表:adbdevices (2)开启或关闭ADB服务: 开启:adbstartserver 结束:adbkillserver (3)连接设备:adbconnectIP断开设备:adbdisconnectIP 如果是USB连接,直接会连接ADB,如果是想通过网络连接(有线或者无线),则需要在同一个局域网,通过设备的ip地址连接即可。 (4)安装卸载apk 安装apkadbinstallrapk路径 常用参数说明:t允许测试包l锁定该应用程序s把应用程序安装到sd卡上g为应用程序授予所有运行时的权限r替换已存在的应用程序,也就是说强制安装d允许进行将见状,也就是安装的比手机上带的版本低 卸载apkadbuninstallapk包名 (5)抓取日志logcat 常用参数说明 s选项:只显示指定标签的日志;adblogcatsSWVDEC显示SWVDEC标签的日志 v选项:设置日志的输出格式;adblogcatvthreadtime查看日志输出时间和线程信息 c选项:清空所有的日志缓存信息;adblogcatc d选项:将缓存的日志输出到屏幕上,并且不会阻塞;adblogcatd t选项:输出最近的几行日志,输出完退出,不阻塞;adblogcatt5输出日志缓冲区的最近5行获取cpu占用:top 常用参数说明: mnumMaximumnumberofprocessestodisplay。最多显示多少个进程 nnumUpdatestoshowbeforeexiting。刷新次数 dnumSecondstowaitbetweenupdates。刷新间隔时间(默认5秒) scolColumntosortby(cpu,vss,rss,thr)。按哪列排序 tShowthreadsinsteadofprocesses。显示线程信息而不是进程获取内存占用:dumpsysmeminfo 获取指定应用的内存dumpsysmeminfo包名获取应用进程号ps (9)从手机中拉取信息到本地电脑上adbpull手机路径本机路径 从本地电脑推送信息到手机上adbpush本机路径手机路径 (10)获取当前运行的Activity adbshelldumpsysactivityfindstrgrepmFocusedActivity (11)adb截图命令:screencap保存图片文件路径 (12)adb录屏命令:screenrecord保存视频文件路径(默认录制时间和最长录制时间都是180秒) 常用参数说明 sizeWIDTHHEIGHT视频的尺寸,如1280720,默认是屏幕分辨率 bitrateRATE视频的比特率,默认4Mbps timelimitTIME录制时长,单位:秒 三:自动化UI脚本编写流程 模拟器配置模拟器系统配置 性能设置选项设置为手机版7201280,如下图所示 机型设置都一致选择MI9(个别机型可能存在兼容性bug,方便统一解决问题),如下图所示 其他设置中开启ROOT权限和ADB调试,如下图所示 然后保存设置,会提示重启系统才会生效,重启系统后,在cmd窗口中,输入:adbdevices,显示如下信息,证明连接成功。 然后安装我们要测试的apk安装uiautomator(用来做xpath值获取的工具) (1)安装uiautomator2库 pipinstallpreuiautomator2 pipinstallpillow(如果需要截图,可安装这个库) (2)安装atxagent init就是所有USB连接电脑的手机上都安装uiautomator2 pythonmuiautomator2init 指定手机安装uiautomator2,用mirror pythonmuiautomator2initmirrorserialSERIAL 嫌弃慢的话,可以用国内的镜像 pythonmuiautomator2initmirror 最后提示success,代表atxagent初始化成功。 (3)安装Weditor pipinstallUweditor 安装好之后,就可以在命令行运行weditorhelp确认是否安装成功了。 Windows系统可以使用命令(weditorshortcut)在桌面创建一个快捷方式, 如下图所示: 启动weditor的方式 方法1。命令行直接输入weditor会自动打开浏览器,输入设备的ip或者序列号,点击Connect即可; 方法2。桌面上双击WEditor快捷方式即可; 方法3。命令行中执行pythonmweditoruiautomator常用API 参考教程https:vic。kim20190520UIAutomator2E79A84E4BDBFE794A8 截至这里,各种环境已经安装完毕!需求用例熟悉 我们看2条注册模块的用例: 用例编号 模块 预置条件 操作步骤 期望结果 测试结果 1hr注册 网络正常输入正确的账号和密码点击注册 2。弹出toast,提示注册成功,跳转到登录页面 2hr注册 网络正常1。输入已经注册过的账号和密码 2。点击注册 2。弹出账号已经注册的toast提示 拆解操作步骤,结果判断等 操作步骤:打开app,点击注册按钮,然后定位到账号和密码文本框分别做出对应的操作 判断:注册成功后,弹出注册成功后,会跳转到登录页面,重复注册只是给出toast提示 以上是操作步骤和预期结果,在实际工作中,我们还需要在问题出现的时候,截屏或录屏并给开发抓取log,最好还要给出执行用例的时间。 操作步骤如下 然后我们用代码实现如下图:importosimporttimeimportuiautomator2asus导入uiautomator2库as是取个别名叫us通过连接实例化拿到设备类driverus。connectusb()通过包名启动app录制屏幕os。system(startadbshellscreenrecordtimelimit60sdcardtest2。mp4)driver。appstart(com。example。wenhaotest)引号内为包名称time。sleep(5)通过xpath定位到注册按钮并点击driver。xpath(〔resourceidcom。example。wenhaotest:idbtn1〕)。click()driver。xpath(〔resourceidcom。example。wenhaotest:idbtn2〕)。click()time。sleep(5)当注册页面的某个xpath出现后,我们通过xpath定位到账号和密码并输入对应的内容,然后点击注册按钮ifdriver。xpath(〔resourceidcom。example。wenhaotest:idregisterbutton〕)。exists:通过xpath定位到账号输入内容driver。xpath(〔resourceidcom。example。wenhaotest:idregisteruser〕)。settext(1kobebrant2)通过xpath定位到密码输入内容driver。xpath(〔resourceidcom。example。wenhaotest:idregistermm〕)。settext(8888888888)通过xpath定位到注册按钮并点击driver。xpath(〔resourceidcom。example。wenhaotest:idregisterbutton〕)。click()硬等待通过登录页面唯一xpath值定位,确认是否跳转,如登录页面有登录按钮通过对应函数获取app弹出的toast内容textContentdriver。toast。getmessage()print(textContent)硬等待time。sleep(5)if(driver。xpath(〔resourceidcom。example。wenhaotest:idbtn1〕)。existsandstr(textContent)注册成功):print(pass)抓取日志os。system(adblogcatt100000C:UsersLENOVODesktoptest1。log)else:print(failed)抓取日志os。system(adblogcatt100000C:UsersLENOVODesktoptest1。log)