要件を満たさない場合に EditText のエラーを設定する検証コードがあります。
field.setError(errorMessage);
これにより、フィールドの上に感嘆符が付いた小さな赤い円が表示され、フィールドに触れると、黒いボックスにエラー メッセージが表示されます。すごい!
ここで、フィールドが検証に失敗したことをひょうたんに検証させたいと思います。現時点では、少なくとも特定のエラー メッセージについては心配していません。エラー メッセージが表示されていることを知りたいだけです (または、感嘆符で解決できれば幸いですが、クエリを使用して見つけることができないため)。コンソールでは、それはもっと難しいと思います)。
このクエリ:
query("android.widget.PopupWindow$PopupViewContainer")
エラーメッセージウィンドウが存在する場合は、それを見つけます。
ただし、エラーのあるフィールドにフォーカスがある場合にのみ表示されます。そして、フィールドがフォーカスを失ったときにのみエラーを設定します。これで問題ありません。私のステップでは、フィールドにテキストを入力し、フィールドを離れて、戻ってくることができます。これらを手動で行うと、エラー メッセージ ウィンドウが表示されます。私がまだできていないことは、これらのことを行い、エラー メッセージ ウィンドウを確実に表示するステップを書くことです。私が試してみました
query("EditText id:'#{field_id}'", {:setText => bad_text})
touch(query("* id:'#{another_field_id}'")[0])
touch(query("* id:'#{field_id}'")[0])
と
query("EditText id:'#{field_id}'", {:setText => bad_text})
system("#{default_device.adb_command} shell input keyevent KEYCODE_TAB")
touch(query("* id:'#{field_id}'")[0])
これらはどちらも最初の EditText では正しく動作しますが、後続の EditText ではエラー メッセージ ウィンドウを表示できません。なんで?これを行う正しい方法は何ですか?