STF STF 中 minicap 工具的使用问题

bauul · 2016年08月16日 · 最后由 hello 回复于 2018年11月20日 · 6270 次阅读

  最近在编写自动化测试工具时,用到了 STF 中的 minicap 工具,碰到了一个问题:
    截图时,在五个手机上测试,其中 oppo 手机截图显示全黑(图片大小 33K 左右,),其余四只显示正常。
在同事的苹果电脑上用 STF 刷新 oppo 手机界面时就是正常的

  问:有同学知道这是怎么回事吗?
  
  截图方法:
  1. 安装 minicap 到手机:
   
  2. 赋可执行权限:
   dos:
   adb shell
   $cd /data/local/tmp
   $chmod 777 /data/local/tmp/mini*
   

  3. 执行截图命令:
    dos:
   adb shell
   $LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s > /mnt/sdcard/tmp.jpg
   

   

   截出来的是全黑图:
   

  问题已解决,更新一下解决方法:
   dos:
   adb shell
   $LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0
   备注一下:,这里另开一个CMD窗口,再执行以下命令,或在上一条命令的最后一行加"&"符号哈:
   adb shell
   $LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s > /mnt/sdcard/tmp.jpg
   

  已截出来的正常的图片:
   

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 38 条回复 时间 点赞

jpg 咋变成了 png?

bauul #10 · 2016年08月16日 Author

#2 楼 @among29
这个后缀后可以修改的,不影响图片展示,应该是在执行 adb pull 时,修改了后缀,这个不是重点哈

如果在 mac 是好的, 在 win 上不行,我觉得不应该。
严谨的测试下吧,保证过程一致。

也用过这个截图,对部分手机是兼容性不好,我们加了判断,如果失败,或是图片大小为 0,就换 screencap。

bauul #34 · 2016年08月16日 Author

#4 楼 @among29
这是一种解决方法,不过是没有办法的办法,因为在苹果电脑上使用 STF 本身获取手机屏幕,就没有问题,感觉比较奇怪,因为截图的动作应该是在手机上执行的,STF 本身也是获取的输出流,然后在浏览器上展示出来的,所以我猜是和电脑没关系,但我也不知道具体什么原因

获取手机实时屏幕显示和截图是同一个命令。
截图:
LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -s -P 1080x1920@360x640/0 > /data/local/tmp/tmpscreen.jpg

实时显示:
LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@360x640/0

bauul #32 · 2016年08月16日 Author

#6 楼 @among29
有参数-s 的区别的嘛

好像-s 就是截图的意思,看-h 吧。

bauul #17 · 2016年08月16日 Author

#8 楼 @among29
嗯,这个我了解的,谢谢

我觉得截图和实时查看,要不都可以,要不都不可以,应该不存在只支持其中一个。

windows。。我不知道耶。。。

作者在日本,但是 oppo 手机在日本并不常见

bauul #26 · 2016年08月17日 Author

#11 楼 @monkey @codeskyblue
好吧,那么我换个问法,我的截图动作是否完全正确,是否还有其他细节?

用法没错,只是 minicap 并不是支持所有的手机

bauul #15 · 2016年08月17日 Author

#14 楼 @codeskyblue
谢谢,这个问题已经解决了

#15 楼 @carl 你怎么解决的?

bauul #13 · 2016年08月17日 Author

#16 楼 @codeskyblue
更新本贴,见内容哦,最好能在你那之前不行的机器上验证一下,哈哈

#17 楼 @carl 并没看出你的操作跟之前的有啥区别?

#18 楼 @codeskyblue
找机器来试一下吧,操作上是有区别的,已再次更新

bauul #19 · 2016年08月17日 Author

#18 楼 @codeskyblue
Hi, 验证了吗?可以吗?

#20 楼 @carl 我这暂时测不出来,要么 ok,要么 minicap 崩溃

bauul #28 · 2016年08月17日 Author

#21 楼 @codeskyblue
哦,好吧,没有碰到截出来黑屏屏的状况吗?

#22 楼 @carl 模拟器的时候会黑屏,其他的时候正常

看到壁纸,确认是你啦~

@carl
今天试用了一下 minicap,遇到点问题,咨询一下,
1、前置条件略
2、启动 minicap:adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0
3、截图:adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s >c:\test.png
生成的图片无法正常显示,提示该图片已损坏或无法显示。
有遇到个这种问题吗

bauul #12 · 2016年12月19日 Author

#26 楼 @mikezhou
暂时没有遇到这种情况,检查一下相关信息吧:

  1. Android 版本和手机 CPU 类型,是否 push 了对应的 minicap 及 so 文件
  2. 检查手机分辨率
  3. 执行命令:$LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 后,是否有本文第二张图片的输出,简单来说就是正常截图时,和异常截图时对比一下输出的信息是否完全相同。

@carl ,
1、有一种方法可以成功,可以截图成功的操作:通过 adb shell 进到手机对应的目录下/data/local/tmp 目录下,执行 $LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s > /mnt/sdcard/tmp.jpg 命令就可以,然后再将截图 Pull 到 win 电脑中。
2、如果在 dos 命令提示 符中,直接执行 adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s > c:\ tmp.jpg ,生成的图片就显示已损坏。

bauul #32 · 2016年12月20日 Author

“adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s > c:\ tmp.jpg”
这里少一个字符噢!
@mikezhou

bauul #30 · 2016年12月20日 Author

#28 楼 @mikezhou
adb shell "$LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -s" > c:\ tmp.jpg
另外这是一个 shell 命令,直接把结果导出到 windows 端会存在文件头解析的问题(因为手机是 linux 和 windows 的编码格式有一些差别导致的)

#28 楼 @mikezhou 我也遇到跟你同样的问题,请问解决了么?

@carl
楼主,你好;
从 github 上下载的 minicap 没有你所说的这个文件夹 bin,要怎么办?
你那有编译好的吗?

老师,夜神模拟器黑屏是什么情况,有研究过么?。同样的代码小米手机是可以的。夜神模拟器是黑屏

hello 回复

一直用真机,很少用模拟器啊,不清楚噢

hello 回复

是用 minicap 截出来黑屏吗?按我的方法试一下看看,有没有用?

bauul 回复

真机可以的,小米和 op 都行。模拟器试了夜神和网易木木都不行。估计是不支持😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册