ハイブリッド アプリケーションをテストするために、Selenium と Selendroid を使用しています。私のアプリケーションには、ネイティブ パーツと WebView が含まれています。WebView で ajax 呼び出しを実行し、(PostMessage を使用して) 非同期イベントをリッスンします。
私の問題は、Selendroid テスト (私は Java を使用しています) を WebView コールバックに接続したいということです。意味は、WebView で取得したイベントについて、Selendroid テストで認識したいということです。たとえば、WebView (JavaScript コード内) でイベントが受信されるまでテストを待機させたいとします。
私のネイティブ アプリケーションでは、ネイティブ部分と WebView を接続するために addJavascriptInterface を使用しているため、ネイティブ アプリはイベントを認識しています。これらのイベントをテスト コードに渡すにはどうすればよいですか?
私の最初の試みは、ネイティブ パーツ内に EditText を追加することでした。Web ビューでイベントが受信されると、JavaScriptInterface を介してネイティブ パーツに通知され、この EditText が更新されます。次に、要素にテキストが表示されるまで待機しようとしました( wait.until(ExpectedConditoins.textToBePresentInElement(...)) を使用)が、問題は WebView が開かれ、ネイティブの EditText ビューが非表示になるため、実際にはできませんEditText の変更と私のテストでエラーが発生するのをリッスンします。
私の 2 番目の試みは、ログ ファイルを作成し、ネイティブからのすべてのログをこのファイルに書き込むことでした。次に、テストコードでこのファイルに接続し、新しい行が表示されるのを待ちます。問題は、できるかどうか、そしてこれを行う方法がわからないことです。
私の質問は、WebView 内の JavaScript コードで受信したイベントについて、テスト コードで認識する最善の方法は何かということです。