ADB可以查看浏览器是否已完全加载



我创建了一个应用程序,它通过ADB与Android模拟器交互,将浏览器发送到特定的URL,然后截图浏览器窗口。然后我抓取图像并将其在服务器端转换为JPG格式。

一切都工作得很好,但是现在我只是简单地做一个thread.sleep() 15秒,以确保浏览器完成加载我传入的URL。嗯,这在大多数情况下工作得很好,但有些网站在15秒之前就完成了加载,而其他网站仍然需要几秒钟。

我想知道是否有一种方法通过ADB,我可以检查浏览器是否完成加载,而不是设置一个静态的等待时间?

有一种方法:在打开浏览器后,加载一个javascript url,一旦页面加载,它将输出到控制台。然后在logcat中查找输出。在android中,所有console.log() javascript调用都被转发到logcat。(标签名称取决于操作系统版本,寻找控制台,浏览器或WebCore)

为例:

adb shell am start -a android.intent.action.VIEW -d http://www.stackoverflow.com ; sleep 1 ; adb shell am start -a android.intent.action.VIEW -d "javascript:window.onload=function(){console.log('stackoverflow rocks hard.')}" -n com.android.browser/com.android.browser.BrowserActivity

当网站完全加载时,您可以在logcat上看到以下行:

11-16 23:03:53.887: D/WebCore(1672): Console: stackoverflow%20rocks%20hard. line: 1 source: 

最新更新