测试从活动中启动的Espresso中的WebView?

时间:2017-08-02 07:43:03

标签: android webview integration-testing android-espresso

我是Espresso的新手。这就是为什么这可能更像是“应该这样做,还是我做错了”这类问题。

但基本上我在使用Espresso测试我的WebView时遇到了问题。当我使用WebView到达Activity(实际上是片段)时,Espresso无法确定视图是否空闲,我得到了可怕的AppNotIdleException异常。我不知道我做错了什么,或者这种情况是否有效。

这是我的测试基本上:

@Test
public void testIncludingWebView() {
    // Go to the activity we want to test. Note, tests start actually earlier.
    onView(allOf(withId(R.id.action_open_activity1), isCompletelyDisplayed()))
            .perform(click());

    // We arrived at the right Activity.
    assertEquals(Activity1.class, Utils.getCurrentActivity().getClass());

    // Select an item from a GridView in the Activity that will launch the WebView.
    onData(MyMatcher.withName(is("Dummy")))
            .perform(click());

    // We should arrive to an Activity with a Fragment. The Fragment will
    // display a full screen DialogFragment that contains the WebView.
    assertEquals(WebViewActivity.class, Utils.getCurrentActivity().getClass());  // <== We never assert this

    // Some tests on the WebView. But these are never run. 
    onWebView().forceJavascriptEnabled();
    onWebView().withElement(findElement(Locator.NAME, "name"))
            .perform(DriverAtoms.webKeys("some text"))
            .withElement(findElement(Locator.XPATH, "//button[contains(text(), 'Submit')]"))
            .perform(webClick());
}

回顾一下:我有一些我导航到的活动,最后我到达一个带有片段的活动,这个片段将显示一个带有WebView的全屏DialogFragment。当我到达这里时,Espresso无法确定闲置状态。

另外非常重要的一点是,当我启用Developer Options -> Show screen updates时,我可以看到屏幕不断闪烁在我获得超时异常的视图上,这意味着屏幕不断更新。 AFAIK Espresso确定应用程序是否空闲的一个方法是等待屏幕渲染结束。所以这可能就是问题所在。

但为什么屏幕会一直更新?我猜这里有它的优点; Chrome / WebView是否一直在更新屏幕,因为我打开WebView的方式还是有一些我想要找到的未知动画?我试图在视图中寻找可以停止的动画,但由于它只是我正在显示的WebView,我还没有找到任何东西。

其他人是否能够使用Espresso测试这种情况?

0 个答案:

没有答案