5

Android の uiautomator を使用すると、テキスト フィールドにテキストを設定できますが、キーボードを閉じることができません。一部の電話機では、横向きモードのときにキーボードが画面全体を占有し、そのビューから出るには [完了] をタップする必要があります。キーボードを抑制することができれば、横向きと縦向きの両方で uiautomator を問題なく実行できます。

new UiObject(new UiSelector().text("Enter Text")).click();
new UiObject(new UiSelector().className("android.widget.EditText").instance(0)).setText("sample text");

// This is where I need to suppress the keyboard to view the app instead of just the keyboard itself.

new UiObject(new UiSelector().text("Submit")).click();

前もって感謝します。

4

6 に答える 6

6

これはかなり古い質問ですが、UiAutomator 2.0 を使用すると、質問に正しく完全に答えることができるため、ここにあります。

最適は次のようになります。

if(isKeyboardOpened()){
    UiDevice.pressBack();
}

しかし、これまでの問題は isKeyboardOpened() の実装方法でした。

UiAutomator 2.0 はインストルメンテーションに基づいているため、UiAutomation にアクセスできるため、画面に入力ウィンドウがあるかどうかを確認できます。

boolean isKeyboardOpened(){
    for(AccessibilityWindowInfo window: InstrumentationRegistry.getInstrumentation().getUiAutomation().getWindows()){
        if(window.getType()==AccessibilityWindowInfo.TYPE_INPUT_METHOD){
            return true;
        }
    }
    return false;
}
于 2016-06-08T16:30:28.290 に答える
2

通常、Back キーをクリックすると、キーボードが閉じます。

getUiDevice().pressBack();
于 2013-07-16T06:14:03.597 に答える
0

多くの作業の後、最終的にこれを行う方法を見つけました。問題は、ソフト キーボードが表示されていない場合、呼び出しgetUIDevice().pressBack()がテストを中断する可能性があることです。

InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isAcceptingText()) {
    getUIDevice().pressBack();
}

キーボードが表示されている場合にのみ、それは押し戻されます。

于 2016-01-21T12:53:57.303 に答える
-1

オプション を指定してツールをDummyIME実行してみてください。Android git リポジトリにあります。uiautomator-e disable_ime trueDummyIME

  1. のソース コードを複製DummyIME:

    git clone https://android.googlesource.com/platform/frameworks/testing
    
  2. ビルドしてインストールしDummyIMEます (変更してもかまいませんandroid-18):

    cd testing/uiautomator/utils/DummyIME
    android update project -p . -t android-18
    ant clean debug install
    
  3. オプション付きの uiautomator フレームワークを使用してテストを実行し-e disable_ime trueます。

    adb shell uiautomator runtest <JARS> -e disable_ime true -c <CLASSES> 
    

テストの実行後に自動的に変更されるため、テストしたデバイスの既定の IME の設定を復元する必要があることに注意してくださいDummyIME

于 2013-10-28T14:14:39.720 に答える