美文网首页
自动化截屏工具使用问题记录

自动化截屏工具使用问题记录

作者: 卢纪超 | 来源:发表于2020-06-30 17:41 被阅读0次

    一.背景描述:
    在做App自动化的时候需要使用adb tools提供的截屏工具uiautomatorviewer.bat.但是windows在安卓8.0以上的手机上使用该工具截屏时会报错.通过百度发现是因为工具自身的原因导致的.

        为了能使用该工具完成元素定位,根据原因完成了使用命令行的方式完成屏幕截图,需要截取两个文件(.png和.uix),并可以动态的生成文件名.
    

    二.实现方案:
    前提是:该电脑已安装了adb tools工具.
    下载地址为:http://www.androiddevtools.cn/

    1.通过命令行的方式先将截屏文件保存到手机中

    adb shell uiautomator dump /sdcard/app.uix
    adb shell screencap -p /sdcard/app.png

    2.然后命令行的方式将手机中的文件导出到本地
    adb pull /sdcard/app.uix D:/screenshot/app.uix
    adb pull /sdcard/app.png D:/screenshot/app.png

    3.使用uiautomatorviewer工具的打开文件,将本地截屏文件导入到工具.
    添加前的效果:


    image.png

    添加后的效果:


    image.png
    image.png

    Notice:在使用的时候又发现一个问题,不能每次截屏都输入上面的四行命令吧?
    所以想到了批量处理bat文件.

    4.在桌面上新建一个Aui.txt文件,然后将下面的命令复制进该文件后保存

    @echo on
    adb shell uiautomator dump /sdcard/app.uix
    adb pull /sdcard/app.uix D:/screenshot/app.uix
    adb shell screencap -p /sdcard/app.png
    adb pull /sdcard/app.png D:/screenshot/app.png

    5.将文件后缀txt修改为bat.每次需要截屏时.点击该bat文件后会在对应的目录文件加screenshot中生成两个文件


    image.png

    Notice: 在使用过程中,发现每次截屏后都会把原来的截屏文件覆盖掉,下次再看原来的截屏文件时还需要重新截屏.
    这有点得不偿失了.看了命令文件发现:是每次都使用了相同的文件名导致的.
    下面对该问题进行改良.具体实现步骤如下:
    解决该问题的思路是:
    文件名+时间戳+文件后缀名的方式保证每次生成的文件名是不相同的.

    6.获取系统当前时间
    一般来说最简单的代码类似于:

    set timeStamp=%date:/=-%_%time%
    echo %timeStamp%
    2020-06-30_17:23:44.43

    但是这会引发两个问题:
    1、10点前的timeStamp会出现空格,网上很多人在讨论了,但忽略了下面这个问题;
    2、%date%和%time%都是直接读windows的时间格式(也就是右下角的那个时间格式),会出现不通用的结果。

    改良方案:引入winc格式化时间,得出YYYYMMDDHHMinSec,代码如下:

    @echo off
    for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
    echo %dt:~0,14%
    2020063017234443

    完整代码如下:

    @echo on
    for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
    set m=%dt:~0,14%
    adb shell uiautomator dump /sdcard/app.uix
    adb pull /sdcard/app.uix D:/screenshot/app_%m%.uix
    adb shell screencap -p /sdcard/app.png
    adb pull /sdcard/app.png D:/screenshot/app_%m%.png

    效果为:


    image.png

    为了适应时间格式的多样化,可以在时间中间增加分隔符进行格式化,例如

    @echo off
    for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
    echo %dt:0,4%-%dt:4,2%-%dt:6,2%_%dt:8,2%-%dt:10,2%-%dt:12,2%-%dt:~14,2%
    2020-06-30_17_23_44_43

    自此,动态生成文件名的目的已经达到.记录下问题改良的过程,方便以后查阅.

    相关文章

      网友评论

          本文标题:自动化截屏工具使用问题记录

          本文链接:https://www.haomeiwen.com/subject/psbxqktx.html