[英]How can I Enroll Touch ID in Simulator from the command line?
我想從命令行在iOS模擬器中注冊Touch ID,這樣我就可以圍繞授權運行一些自動UI功能測試。
我嘗試了一些不起作用的東西:
xcrun simctl
沒有Touch ID選項 osascript
沒有輔助功能權限(我不喜歡這種侵入性的解決方法 ) 如果重要的話,我正在使用Frank和Cucumber進行測試。
xcrun simctl spawn 'iPhone X' notifyutil -s com.apple.BiometricKit.enrollmentChanged '1' && xcrun simctl spawn 'iPhone X' notifyutil -p com.apple.BiometricKit.enrollmentChanged
這將注冊指紋。 代碼來自這里
編輯:您可以使用此手指觸摸:
xcrun simctl spawn 'iPhone X' notifyutil -p com.apple.BiometricKit_Sim.fingerTouch.match
xcrun simctl spawn 'iPhone X' notifyutil -p com.apple.BiometricKit_Sim.fingerTouch.nomatch
更新2019年5月:閱讀接受的答案,這就是做到這一點的方法。
2016年的原始答案 :據我所知,沒有辦法在模擬器上激活它。
通常,為了測試這樣的東西,我假裝從Apple組件回調,或者如果沒有預期的回調就彈出警報視圖(比如調用openURL:
,我會彈出一個警告視圖,其中包含應該打開的URL在測試時驗證打開該URL時是否會打開正確的東西。
這感覺有點像hacky,但它至少告訴我,如果Apple組件給我預期的回調,我的應用程序將采取預期的行動。
你怎么知道它是否正在測試? 好吧,你有幾個選擇。
Jon Reid有一個很好的帖子,關於如何判斷你是否在運行時測試: http : //qualitycoding.org/app-delegate-for-tests/ - 雖然他正在使用它來切換應用代表,我已經使用類似的技術來檢查應用程序目前是否正在測試中。
我不是100%肯定這種技術適用於Cucumber和Frank,因為我不知道它們是否在與測試相同的過程中運行。 對於沒有在與測試相同的進程中運行的東西(例如XCUI測試),我在啟動應用程序時傳遞了ProcessInfo
參數,以便它知道要查找的內容。 痛苦的屁股,再次,hacky,但它似乎確實有效。
有一種方法可以從命令行執行此操作(不涉及可訪問性),但它也具有侵入性(並且不是很容易)。 您可以像Facebook的FBSimulatorControl項目那樣使用Apple的CoreSimulator框架(但不支持touchID注冊功能)。
您可以在此處查看示例Swift腳本:
https://github.com/flockoffiles/SimTestCtl/blob/master/SimTestCtl/main.swift
有了它,您可以注冊或取消注冊已啟動的iOS模擬器(使用給定的UUID)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.