Make Espresso等待WebView完成加载

vau*_*oid 26 testing android webview android-espresso

有没有可靠的方法让Espresso等待WebViews完成加载?

我尝试过这里概述的方法,但发现它不可靠.它还有其他缺点:

  • 它依赖于替换WebView的WebChromeClient.由于WebViewrt由于某种原因没有getWebChromeClient()方法,因此无法包装任何现有的WebChromeClient.
  • 它需要一个特定的WebView实例,因此每次我使用WebView启动一个Activity时,我必须获取WebView实例并为其注册一个新的WebviewIdlingResource.

我希望有人有一个没有任何这些缺点的解决方案.我曾希望espresso-web软件包可以提供解决方案,但它似乎没有提供与加载有关的任何内容.

yog*_*arl 6

正如您所提到的,有一个名为espresso-web的espresso插件,用于处理Web视图及其内容.

"完成加载"是一个模糊的概念.这将取决于什么你要完成具体.

如果使用onWebView().check(<the you want to finish is in your webview>),只有在加载Web视图并且check成功后才会返回.

Espresso-web是在Android上使用WebViews的入口点.它使用来自流行的WebDriver API的Atoms来内省并控制WebView的行为.

与onData类似,WebView交互实际上由几个View Atoms组成.Atom可以看作是一个ViewAction,一个在UI中执行操作的自包含单元.但是,它们需要妥善编排,并且非常冗长.Web和WebInteraction包装了这个样板,并提供了与WebViews交互的类似Espresso的感觉.

https://google.github.io/android-testing-support-library/docs/espresso/web/index.html

  • 我有一段时间没有看过这个,但是如果我没记错的话`check()`如果内容没有加载则会立即失败.换句话说,我需要在调用之前等待内容加载. (5认同)