Macaca 如何在 ios 真机上实现对启动图进行截图?

Michael_Wang · February 22, 2017 · Last by 于超 replied at June 15, 2017 · 1387 hits

目的

想对 App 启动时候的启动图进行截图保存

问题

Macaca 目前没有启动、关闭 App 的方法。
试过在初始化时进行截图,但没有成功,因为App 启动进入 home 页面后,Macaca 才初始化成功,无法使用截图功能。

目前在模拟器的做法

在所有用例执行完后,使用 xcrun simctl terminate udid bundle_identifier 关闭程序,然后 xcrun simctl launch udid bundle_identifier 启动程序,然后使用 driver.save_screenshot(image_name) 进行异步线程截图5次。

  • 放在最后的原因,使用上面命令进行关闭、启动程序后,无法再操作App
  • 使用异步线程的原因,跑完所有用例后,重启 App 的时候,启动时间很长5-12s 不等。因此使用异步线程多次截图

在真机上如何实现?

  • 经过多方查找没有找到类似 xcrun simctl launch/terminate 的方法。查过 ios-deploy, instruments, xcrun 没找到相关命令。

  • 刚想到用三方的截图工具,在初始化时进行截图,应该可以实现,我去试试。。。。

  • update: 使用 idevicescreenshot
    brew install --HEAD libimobiledevice -g
    sudo chmod -R 777 /var/db/lockdown
    --HEAD 参数解决不能对 iOS 10+ 截图的问题 (报错ERROR: Could not connect to lockdownd, error code -5

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

我知道macaca支持截图,但是达不到我说的目的。没明白上面链接有特殊含义吗?

Wda启动后就能截图了

idevicescreenshot

xdf 回复

如问题中描述:
试过在初始化时进行截图,但没有成功,因为App 启动进入 home 页面后,Macaca 才初始化成功,无法截到启动欢迎界面的页面。

codeskyblue 回复

多谢,idevicescreenshot 应该可以。但尝试时遇到问题,需要 sudo 才能截图,正在查找解决方法。

Michael_Wang 回复

不需要sudo呀

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import shutil
import sys
import time
path = os.path.dirname(sys.argv[0])
os.chdir(path)
cmd0 ='sudo chmod -R 777 /var/db/lockdown/'
os.popen(cmd0)
a = time.strftime('%Y-%m-%d-%H_%M_%S')
b ='.png'
cmd1 ='idevicescreenshot '+a+b
os.popen(cmd1)

这个是我用 idevicescreenshot 截图的command, 需要sudo chmod给权限,不然会运行报错,报错就无法用了,因为我是双击运行的

重来看雨 回复

你的 sudo 不需要输入密码么?

Michael_Wang 回复

要。。在命令行输入后,就执行截图了

重来看雨 回复

分享一个命令,可以将密码输入写在代码里面,要不要使用,看你对密码安全是否敏感
echo 'password' | sudo -S chmod
会将密码自动传入到后面的命令中。

Michael_Wang 回复

谢谢。尝试了

cmd0 ='echo xxxx | sudo chmod -R 777 /var/db/lockdown/'

可以跳过输入密码,

Michael_Wang 关闭了讨论 24 Feb 08:22
14Floor has been deleted
15Floor has been deleted
16Floor has been deleted

idevicesscreenshot 可支持ios 10 版本的截图

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up