モンキーランナーのadbシェルを使用してやりたいことを行う方法があり、別のサードパーティライブラリは必要ありません。
if ('mInputShown=true' in device.shell('dumpsys input_method')):
<conditional code for when soft keyboard is showing goes here>
また
if ('mInputShown=false' in device.shell('dumpsys input_method')):
<conditional code for when soft keyboard is not showning goes here>
ここdevice
で、は接続されたデバイスのMonkeyDeviceのインスタンスです。
手動起動時に入力用のソフトキーボードを通常表示するアプリケーションは、monkeyrunnerで起動したときに確実に表示されないことがわかりました。スクリプトロジックがソフトキーボードが表示されているかどうかに依存する場合は、スクリプトで上記のテストを使用して、ソフトキーボードが表示されているかどうかを確認します。
以下の説明には、このタイプの問題を解決する方法についての考えが含まれています。
adb shell dumpsys
デバイスで実行されているすべてのサービスの非常に大きく詳細なダンプを返します。ダンプは、単一のサービス(このdumpsys
場合は入力サービス)に対して要求される場合があります。その使用法は
adb shell dumpsys input_method
これは、現在のインプットメソッドマネージャーの状態であるはるかに小さなダンプを返します。このダンプには、現在のすべてのInputMethodインスタンス、入力メソッドマネージャークライアントの一般的なパラメーターを持つ入力メソッドマネージャークライアント、入力メソッドクライアントの状態、および入力メソッドサーバーの状態が含まれます。入力方式マネージャークライアントの一般的なパラメーターの1つのセットは、入力方式が表示されるかどうか(ソフトキーボードなど)と、入力方式の表示が要求されたか、明示的に要求されたか、強制されたか、および表示されているかどうかに関するいくつかのパラメーターに関連します。
入力方法が表示されているかどうかは、ソフトキーボードが表示されている場合はtrue、ソフトキーボードが表示されていない場合はfalseであるため、重要です。そのパラメータの名前は
mInputShown
のようになります
mInputShown = true
また
mInputShown = false
ソフトキーボードが表示されているかどうかによって異なります。
次のステップは、monkeyrunnerスクリプトでこの情報を利用することです。MonkeyDeviceクラスには、monkeyrunnerによるブリッジの使用内からADBシェルコマンドを実行するためのメソッドが含まれており、ADBシェルコマンドの実行からADBシェルへの戻り値であるオブジェクトを返します。モンキーランナースクリプト内では、次のようになります
shell_cmd_return_stuff = device.shell('dumpsys input_method')
ここdevice
で、は接続されたデバイスのMonkeyDeviceクラスのインスタンスであり、shell_cmd_return_stuff
すべてのシェルコマンドの出力(この場合はダンプ出力)を保持する変数です。最後に、テキスト内の特定のパラメーターと値のペアを探して、それがどのように見えるかを知っているので、標準のJythonを使用して、変数に保存せずに、Jython文字列in
ブール演算子を使用せずに返された出力内の文字列を探すことができます
if ('mInputShown=true' in device.shell('dumpsys input_method')):
<conditional code for when soft keyboard is showing goes here>
また
if ('mInputShown=false' in device.shell('dumpsys input_method')):
<conditional code for when soft keyboard is not showning goes here>
ソフトキーボードが現在表示されているかどうかを知りたいかどうかによって異なります。
楽しみ!