2016-03-02 42 views
4

在Xcode UI測試期間,我如何insertTextUIView符合UIKeyInputXcode UI測試UIKeyInput類型文本

我創建了一個符合UIKeyInputCodeInputView

當我記錄自己手動輸入密碼時,Xcode writes app.typeText("1234")

但是,當我嘗試播放時,出現錯誤UI Testing Failure - Neither element nor any descendant has keyboard focus。而且,這個問題的解決方案都沒有奏效。

+0

forums.developer.apple.com/message/29549#29549 – Che

+0

順便說一句,嘗試點擊前點擊。並檢查模擬器設置:硬件 - 鍵盤 - 連接硬件鍵盤(假) – Che

+0

我試過這兩件事情。我也試過模擬器>重置內容和設置...仍然無法正常工作。 – ma11hew28

回答

1

CodeInputView需要專注才能輸入文字。通過佔位符文本訪問輸入或手動設置輔助功能標籤。

let app = XCUIApplication() 
let codeTextField = app.textFields["Your code"] 

codeTextField.tap() 
app.typeText("1234") 

以上數據假設佔位符或可訪問的標籤被設定爲「您的代碼」。

+0

我會嘗試,但我不認爲這將解決問題,因爲我不需要在錄製過程中單擊它,因爲我在'viewDidLoad'中調用'codeInputView.becomeForstResponder'。 – ma11hew28

+0

第一響應者異步發生,所以框架可能尚未註冊更改。 –

+0

我試過了,但沒有運氣。 *注意:'CodeInputView'不是'UITextField'。它是符合'UIKeyInput'的'UIView'。* – ma11hew28

1

我找到了UIKeyInput的解決方案。請使用:

app.keys["1"].tap() 
app.keys["2"].tap() 
app.keys["3"].tap() 
app.keys["4"].tap() 

// Instead of app.typeText("1234")