iOS - 使用 fastlane snapshot 自动化截图
First at all
首先先介绍一下 fastlane 是干嘛用的:
Fastlane 是一套使用 Ruby 写的自动化工具集,旨在简化 Android 和 iOS 的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布 App。
然后这篇文章主要介绍的是 fastlane 里面其中一个工具——snapshot,我们可以用它来给应用进行自动化截图。
附上官方文档地址:https://docs.fastlane.tools/getting-started/ios/screenshots/
Just to try
好了,接下来进入手把手教学阶段。这里的教学前提是你已经安装好了 fastlane 或者 snapshot。没安装好也没关系,打开终端输入以下代码进行安装:
1 | sudo gem install snapshot |
如果遇到这个问题:
You don’t have write permissions for the /usr/bin directory.
可以尝试加上安装路径
1 | gem install -n /usr/local/bin fastlane |
成功安装完以后。以一个新工程为例子,首先我们需要给他增加一个 UI Testing Target
1、增加 UI Testing Target
选择 Xcode 顶部菜单栏中的 File –> New –> **Target…**,在弹出框中选择 iOS UI Testing Target
名字随意,其他默认。然后点击工程,添加一个新的 scheme
在弹出框中选择你新添加的 Target
2、编辑 UI Testing Target
注意勾选你的 UI Testing Target
,然后点击 Edit Scheme
然后在弹出框中,勾选 Build
中的 Run
和 Shard
3、给工程加入 snapshot
打开终端,切到工程目录底下,输入一下命令:
1 | fastlane snapshot init |
成功后工程目录会多出两个文件SnapshotHelper.swift
文件需要我们添加到项目中使用,注意选中的Target
是前面创建的 UITest Target。如果是 OC
项目,文件拖入时会自动提醒是否创建桥接文件,选择“YES”就行了。
Snapfile
是截图配置文件,可以在里面设置需要截图的设备和语言。
4、在工程中使用 snapshot
当确认了 UI Testing Target
的设置没问题,snapshot
的引用文件在工程中,配置文件也没问题后,我们下一步就可以开始在工程中初始化 snapshot
和调用他的截图方法了。
首先,我们需要在 setUp
方法中初始化,值得一提的是官方文档和网上搜索到的技术博客中 OC 的初始化方法:[Snapshot setupSnapshot:app];
,在 snapshot
中的源码好像已经找不到了,现在的初始化方法如下
1 | XCUIApplication *app = [[XCUIApplication alloc]init]; |
然后在 testExample
方法中实现截图方法
1 | XCUIApplication *app = [[XCUIApplication alloc] init]; |
这里需要强调的一点是 XCUIElement *openButton = app.buttons[@"Open"];
这句里的 “Open”,是怎么来的,他是根据我们创建控件时所设置的 accessibilityIdentifier
的值来的。
1 | UIButton *btnOne = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width / 2, self.view.frame.size.width / 2)]; |
完成这一步,剩下需要做的就不多了。
5、获取自动化截图结果
同样打开终端,切到项目路径,运行
1 | fastlane snapshot |
然后会出现一连串的打印
运行结束以后,成功的话会生成了一个 html 文件和一组截图,html 页面会自己打开。
不过显示的效果有点不太友好~
以上。