2016-06-24 4 views
10

ログイン機能をテストするUIテストがあります(他のものをテストするために使用します)が、あるフィールドから別のフィールドにフォーカスが変更されたときに - キーボードが隠れてしまいますが、カーソルがフィールドで点滅していますが、 field.typeText-no focused fields to fillUIテストのコードで「ソフトウェアキーボードを切り替える」ことはできますか?

何とか私は、Hardware -> Keyboard -> toggle software keyboardをクリックするとキーボードが画面上に残るようになるので、テストはうまくいきます。しかし、私はそれを任意のテストデバイス、任意の開発者マシン上で動作させる必要があるので、私はこのオプションをプログラマチックに "テストが失敗すれば、手を組んで..."という煩わしさを感じずに設定したいと思っています。

可能ですか?

答えて

10

現在のところ、Simulator.appのハードウェアキーボードを無効にすることで、ソフトウェアキーボードが常に存在する可能性があります。例:

defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool NO 
+0

は、それがあまりにもUIテストのために有効にしたまま、シミュレータに手でそれを有効にした後のように見えます。悲しい。 – extempl

+0

ええ、でも、UIテストを実行する前にUIテストを無効にしてから、UIテストの後に再度有効にすることはできます。このバグについてhttp://bugreport.apple.comにレーダーを提出してください。 –

2

シミュレータの.plistファイルが変更され、複数のシミュレータのサポートが追加されました。 ConnectHardwareKeyboardブール値は、デバイスのUDIDの下にネストされました。幸いにも、このUDIDはplistファイルにも格納されています。 UITestターゲットのビルドフェーズで 'スクリプト実行'を使用してこのコードを追加できます。

Xcodeの9の答え:

#grab the UDID from the plist 
UDID=$(defaults read com.apple.iphonesimulator CurrentDeviceUDID) 

#overwrite the existing value with false 
#OR if the plist doesn't have that value add it in 
/usr/libexec/PlistBuddy -c "Set :DevicePreferences:$UDID:ConnectHardwareKeyboard 
false" ~/Library/Preferences/com.apple.iphonesimulator.plist 
|| 
/usr/libexec/PlistBuddy -c "Add :DevicePreferences:$UDID:ConnectHardwareKeyboard 
bool false" ~/Library/Preferences/com.apple.iphonesimulator.plist 
関連する問題