自動化工具Fastlane筆記三: snapshot自動截圖基礎(chǔ)+示例

首先, 看到snapshot部分判族,想必你已經(jīng)對FastLane已經(jīng)有了解。如果你對 Fastlane 還不太了解,那么可以先看我上一篇對于 Fastlane基礎(chǔ)介紹《24. 自動化工具Fastlane筆記一: 安裝, 打包,上傳(testFlight,app store)》项戴,再回來閱讀此篇文章形帮。

前言

Fastlane中和截圖相關(guān)的有兩部分,snapshotframeit周叮。 snapshot負責(zé)對應(yīng)用截圖辩撑,frameit對圖片再加工修飾。

本文這里只針對snapshot仿耽,以示例項目的形式給大家盡可能詳細的說明合冀。

UI Test

在Fastlane-snapshot部分,介紹了snapshot是基于UI Test來實現(xiàn)的项贺。UI Test是蘋果在Xcode7上推出的一個自動化測試模塊君躺。

snapshot uses the capabilities of Apple's UI Tests to drive interactions with your app.

如果想要對UI Test進行了解,大家可以在Fastlane doc中的snapshot部分中的《Getting Started Using UI Tests》小結(jié)找到官方推薦的文檔开缎。

UI Test介紹

好了棕叫,下面開始示例

項目示例及步驟

官方的步驟可以在都可以在Fastlane doc中查看, 文檔格式要比在github中的markdown形式好的多奕删。 《Setting Up snapshot》小結(jié)俺泣, 如下圖:

官方步驟

  • step0: 執(zhí)行sudo gem install snapshot,安裝snapshot模塊
  • step1: 正常創(chuàng)建項目(我的示例項目是之前的一個仿寫項目JiKeScrollView)
  • step2: 執(zhí)行fastlane init創(chuàng)建fastlane文件夾(上一篇文章中有詳細介紹)
    fastlane init
  • step3: 執(zhí)行fastlane snapshot init,創(chuàng)建出SnapfileSnapshotHelper.swift文件伏钠。
    fastlane snapshot init之后

上邊三步還是比較簡單的横漏,如果你fastlane配置的沒有問題,很快就執(zhí)行成功熟掂。

下邊的步驟主要分為兩部分:

  • 一是導(dǎo)入SnapshotHelper.swift(Swift)文件缎浇,也就是在OC項目中引入和使用Swift代碼
  • 二是UI Test錄制手勢赴肚,和開始截圖
  • step4: Add the ./SnapshotHelper.swift file to your UI Test target (You can move the file anywhere you want)SnapshotHelper.swift文件向平常一樣拖入項目尊蚁,選擇加入哪個target的時候, 選擇加入到JiKeScrollViewUITests(自己的項目名字UITests)就可以了,千萬不要勾選其他兩個仑乌,否則會報錯import XCTest找不到琴锭。
    選擇加入的target, 點擊 [確定] 以后. 會詢問你是否創(chuàng)建橋接文件(只有第一次拖入的時候SnapshotHelper.swift 才會提示, 你如果刪除了SnapshotHelper.swift之后决帖, 再次向工程中拖入SnapshotHelper.swift就不會提示了讓你創(chuàng)建橋接文件了, 正常現(xiàn)象)扁远。 這個橋接文件對于在OC項目中引用Swift代碼畅买, 創(chuàng)建與否都可以细睡。但是反過來就不行了溜徙, 如果不提示創(chuàng)建橋接文件, 你可以嘗試手動創(chuàng)建該文件嗓违。 我們的示例項目是OC項目靠瞎!
  • step5: 選中target—JiKeScrollViewUITests-> Build Settings -> Defines Module設(shè)置為YES乏盐。不設(shè)置這一項的話制恍,你會在第六步中發(fā)現(xiàn),引用文件JiKeScrollViewUITests-Swift.h(MYUITests-Swift.h)的時候何吝, 會出現(xiàn)報紅色警告爱榕。 這個警告雖然出現(xiàn)坡慌, 但是com+R依然能正常啟動和運行。但是Defines Module這一步在我們平常的OC引入Swift文件時候也是必須要有的洪橘,我們還是需要設(shè)置為YES, 如下圖:
  • step6: (Objective C only) Add the bridging header to your test class. (1) #import "MYUITests-Swift.h" 引入頭文件 (2)The bridging header is named after your test target with -Swift.h appended. 頭文件的名字是 “項目名+ -Swift.h”
    回到示例項目渣玲,在JiKeScrollViewUITests.m文件中弟晚,我們需要引入"JiKeScrollViewUITests-Swift.h"頭文件。(注意: 這個頭文件是系統(tǒng)默認生成的淑履,不用我們手動創(chuàng)建秘噪,我們在拖入Siwft文件之后勉耀,直接引用就可以。 沒有智能提示至壤,所以不必驚慌像街,保證#import'target名稱-Swift.h'正確就可以了。)

到這里脓斩,com+R一下項目随静,是不是沒有任何報錯吗讶,直接運行了呢照皆?這里關(guān)于OC引入Swift代碼的部分就完成了

移步到JiKeScrollViewUITests.m文件中,簡單介紹一下文件中的三個方法(其實文件中英文注釋已經(jīng)說明了):

    • (void)setUp: 方法在XCTestCase的測試方法調(diào)用之前調(diào)用论寨,可以在測試之前創(chuàng)建在test case方法中需要用到的一些對象等
    • (void)tearDown: 當(dāng)測試全部結(jié)束之后調(diào)用tearDown方法葬凳,法則在全部的test case執(zhí)行結(jié)束之后清理測試現(xiàn)場室奏,釋放資源刪除不用的對象等
    • (void)testExample: 測試代碼執(zhí)行性能

(引用和更新自 《 Xcode7 UITest UnitTest 自動化測試學(xué)習(xí)》)

  • step7: 在- (void)setUp方法中初始化Snapshot對象代碼, 如下:
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [Snapshot setupSnapshot:app];
    [app launch];
  • step8: 錄入UI Test操作胧沫,In your UI Test class, click the Record button on the bottom left and record your interaction绒怨,官方說點擊錄制按鈕直接錄制就可以了,這個地方需要注意的是犬金,你可能發(fā)現(xiàn)錄制紅色按鈕是灰色不可點擊狀態(tài)晚顷,這就尷尬了疗疟。這可怎么辦?
    正確的操作是我們把鼠標(biāo)放到
    • (void)testExample {
      // Use recording to get started writing UI tests.
      }
      這個方法中栓袖。這個時候錄制按鈕才可以點擊! 點擊,自動啟動模擬器音榜,愉快的開始錄制我們的手勢操作必指。
可點擊

不可點擊

關(guān)于錄制手勢,我們每次點擊事件,都會在testExample在這個方法中自動生成測試代碼霜第,我們要做的是在我們把下邊的代碼:
- Swift: snapshot("01LoginScreen")
- Objective C: [Snapshot snapshot:@"01LoginScreen" waitForLoadingIndicator:YES];
放到你需要截圖的點擊事件對應(yīng)的測試代碼位置泌类。
如下圖:


以上八步都完成以后刃榨,我們com+B一下,看看有沒有報警號桌吃,如果沒有茅诱,那么大功快要告成了搬卒。

  • step9: 在工程文件家中找到Snapfile文件,打開按照我們需要的編輯摆寄。 英文注釋很簡明詳細椭迎,我只要快速提醒你田盈, #號是注釋就可以了。下邊是我的配置:
  • step10: 最后一步简软,在控制臺執(zhí)行fastlane snapshot,根據(jù)上邊指定的截圖輸入位置建炫,我們可以看到截圖疼蛾,并且在瀏覽器中自動生成html文件了察郁。

到這里,snapshot部分就結(jié)束了稳捆。

等等麦轰,還有點問題

  1. 題目是淺析,本來我打算?用這個當(dāng)做App Store的展示圖片的款侵,但是發(fā)現(xiàn)還是挺麻煩的,而且frameit還沒有弄鞠评,還是交給美工同志實在一點剃幌。
    這篇文章并不完美晾浴,比如而且遇到一個問題就是對錄制一個手勢操作,即一個地方加入[Snapshot snapshot:@"01LoginScreen" waitForLoadingIndicator:YES];成功抖棘。 這個顯然是存在問題的切省,肯定是可以對很多的手勢進行操作的帕胆,但是我也沒有找出具體的原因懒豹。希望有知道的朋友驯用,一定要告訴我一下蝴乔,不勝感激~驮樊!

  2. 執(zhí)行第十步囚衔,會遇到一個錯誤Incomplete universal character name導(dǎo)致snapshot操作不成功。具體原因現(xiàn)在查到的是因為UTF轉(zhuǎn)碼的問題曙聂,需要把@"\U5373\U523b\U9996\U9875\U6eda\U52a8\U6548\U679c中的大寫U替換成小寫U鞠鲜,就可以了贤姆。 具體可以看《UITests Incomplete universal character name》

  3. 這里強調(diào)一下: OC引入Swift的橋接文件稳衬,如果你之前點擊了取消薄疚,后期再拖入和創(chuàng)建Swift文件是不會再次提示創(chuàng)建的,你需要做的是手動創(chuàng)建砰碴。 步驟《OC引入Swift板丽,混編》《在Swift項目中使用OC埃碱,在OC項目中使用Swift》

參考文章

《fastlane screenshots for iOS and tvOS》
《fastlane 之截圖自動化》

交流


希望能和大家交流技術(shù)
Blog:http://www.lilongcnc.cc


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啃憎,一起剝皮案震驚了整個濱河市似炎,隨后出現(xiàn)的幾起案子凡人,更是在濱河造成了極大的恐慌挠轴,老刑警劉巖岸晦,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件启上,死亡現(xiàn)場離奇詭異店印,居然都是意外死亡,警方通過查閱死者的電腦和手機包券,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門溅固,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侍郭,“玉大人掠河,你說我怎么就攤上這事”蹋” “怎么了跃闹?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵望艺,是天一觀的道長。 經(jīng)常有香客問我艇劫,道長惩激,這世上最難降的妖魔是什么蟹演? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任酒请,我火速辦了婚禮羞反,結(jié)果婚禮上囤萤,老公的妹妹穿的比我還像新娘。我一直安慰自己涛舍,他們只是感情好富雅,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布吹榴。 她就那樣靜靜地躺著滚婉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪远剩。 梳的紋絲不亂的頭發(fā)上骇窍,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天腹纳,我揣著相機與錄音,去河邊找鬼嘲恍。 笑死佃牛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的象缀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼霞怀,長吁一口氣:“原來是場噩夢啊……” “哼莉给!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胁黑,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤丧蘸,失蹤者是張志新(化名)和其女友劉穎遥皂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弟孟,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡拂募,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年陈症,在試婚紗的時候發(fā)現(xiàn)自己被綠了震糖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吊说。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厅贪,靈堂內(nèi)的尸體忽然破棺而出蚤蔓,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布贬芥,位于F島的核電站蘸劈,受9級特大地震影響尊沸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棒掠,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一烟很、第九天 我趴在偏房一處隱蔽的房頂上張望蜡镶。 院中可真熱鬧,春花似錦芹橡、人聲如沸望伦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饵撑,卻和暖如春滑潘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背语卤。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工粹舵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眼滤,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓漾唉,卻偏偏與公主長得像赵刑,于是被迫代替她去往敵國和親场刑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容