2015-01-15 53 views
4

我正在使用UIAutomation在iOS模擬器中進行一些自動化測試。使用UIAutomation禁用iOS模擬器的硬件鍵盤

在Xcode中6,的iOS模擬器的keyboard behavior changed是類似於真正的設備,現在有連接/斷開你的Mac鍵盤模擬器菜單項:硬件>鍵盤>連接硬件鍵盤

我不介意這一點,但當你的Mac鍵盤連接時會發生什麼情況,模擬器將不再顯示軟件鍵盤。當您使用UIAutomation運行測試腳本時,如UIATarget.localTarget().frontMostApp().keyboard().typeString("myString");這樣的調用將失敗,因爲即使您將文本字段設置爲第一響應者,鍵盤也不會出現。

這很煩人,因爲如果我在模擬器中進行任何手動測試,我將需要記住在運行我的任何UIAutomation測試之前禁用硬件鍵盤,否則它們都會失敗。

在UIAutomation JS腳本中,有什麼辦法檢查硬件鍵盤設置並禁用它們嗎?或者,在執行UIAutomation腳本之前,可以通過命令行執行此操作?

回答

3

如果我正確理解你的問題,你需要防彈的方式來輸入文本。我只是使用setValue。就像這樣:UIATarget.localTarget().frontMostApp().textFields().Login.setValue('sofa');

+0

似乎很好。對不起,接受這麼久:) –

0

我寫了一個AppleScript that sets the state of the hardware keyboard,您會執行這樣的:

bash$ osascript scripts/set_hardware_keyboard.applescript 0 
menu item Connect Hardware Keyboard of menu Keyboard of menu item Keyboard of menu Hardware of menu bar item Hardware of menu bar 1 of application process iOS Simulator 
bash$ 

它在照明燈的可作爲target().connectHardwareKeyboard(),所以要確保硬件鍵盤是每個測試運行之前禁用您'd在你的設置中這樣做:

automator.setCallbackPrepare(function() { 
     target().connectHardwareKeyboard(false); 
});