簡體   English   中英

如何從命令行在Simulator中注冊Touch ID?

[英]How can I Enroll Touch ID in Simulator from the command line?

我想從命令行在iOS模擬器中注冊Touch ID,這樣我就可以圍繞授權運行一些自動UI功能測試。

我嘗試了一些不起作用的東西:

  • xcrun simctl沒有Touch ID選項
  • 用於控制菜單的AppleScript無法正常工作,因為osascript沒有輔助功能權限(我不喜歡這種侵入性的解決方法
  • 我嘗試在啟動之前編輯模擬器的plist,但找不到合適的鍵值對

如果重要的話,我正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM