Espresso android自动化测试 - 如何访问由我的应用程序打开的其他应用程序的视图?

问题描述 投票:0回答:1

我的应用程序中有一个按钮,点击后会打开Chrome上的dropbox登录页面。我正在尝试访问该打开的chrome窗口中的视图以填充字段并继续,但由于该活动不属于我的应用程序,因此视图不在层次结构树中。

任何人都知道如何使用espresso访问外部应用程序视图?

我已经尝试过“UI-automator”和“espresso-web”,但无济于事。

android automation automated-tests ui-automation android-espresso
1个回答
0
投票

Android支持多个窗口。通常,这对于用户和应用程序开发者来说是透明的(双关语),但在某些情况下,多个窗口是可见的(例如,在搜索小部件中的主应用程序窗口上绘制自动完成窗口)。为了简化您的生活,默认情况下,Espresso使用启发式方法来猜测您打算与哪个窗口进行交互。这种启发式几乎总是“足够好”;但是,在极少数情况下,您需要指定交互应该定位的窗口。您可以通过提供自己的根窗口(也称为Root)匹配器来完成此操作:例如如果你想点击一个“确定”和“取消”的弹出窗口,你可以像下面这样使用Espresso。

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

另一个例子是使用Espresso Intents:例如:用户操作导致外部“电话”活动在您自己的应用程序中点击呼叫按钮时启动,您可以使用以下命令进行验证:

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

© www.soinside.com 2019 - 2024. All rights reserved.