0

私のアプリにボタンがあります。クリックすると、ChromeのDropboxログインページが開きます。 フィールドを埋めるために開いたクロムウィンドウのビューにアクセスしようとしていますが、そのアクティビティが自分のアプリケーションに属していないため、ビューは階層ツリーにありません。エスプレッソアンドロイドの自動化テスト - 私のアプリケーションで開いた他のアプリケーションのビューにアクセスするには?

誰でもエスプレッソで外部アプリケーションビューにアクセスする方法を知っていますか?

「UI-automator」と「espresso-web」で既に試しましたが、役に立たないです。

+0

[エスプレッソ - 複数のアプリのテストUI](https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html) –

答えて

0

Androidは複数のウィンドウをサポートしています。通常、これはユーザーとアプリの開発者には透過的ですが、複数のウィンドウが表示されることもあります(たとえば、検索ウィジェットのメインアプリケーションウィンドウに自動完成ウィンドウが表示されます)。あなたの人生をシンプルにするために、Espressoはデフォルトでヒューリスティックを使って、どのウィンドウと対話するかを推測します。このヒューリスティックは、ほとんど常に「十分に良い」ものです。まれに、インタラクションがどのウィンドウを対象とするかを指定する必要があります。独自のルートウィンドウ(別名ルート)マッチャーを提供することで、これを行うことができます。 「OK」と「キャンセル」があるポップアップをクリックする場合は、次のようにエスプレッソを使用できます。

onView(withText("OK")).inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView())))).perform(click()); 

別の例は、エスプレッソインテントを使用することです。たとえば、次のように外部の「電話」の活動になり、ユーザーのアクションは、独自のアプリからの呼び出しボタンをクリックすると起動され、あなたが使用して確認できます。

androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2' 

user.clickOnView(system.getView(R.id.callButton)); 
intended(toPackage("com.android.phone")); 

に言及した様々な例を見てみましょう: をOfficial Google Android Test Forum

関連する問題