使用Selenium或JavaScript,您如何获得(通过网络)已加载页面的传输大小(字节),包括所有内容、图像、css、js等?
优选的大小是通过网络的内容的大小,即被压缩的大小,仅用于所做出的请求,等等。
这是你通常可以在开发工具中看到的,在网络状态栏的右边:
如果这不可能,是否可以只获得所有加载资源的总大小(没有压缩等)?这将是一个可接受的替代方案。
浏览器是Firefox,但如果可以使用其他Selenium兼容浏览器,也是可以接受的。
我想这可以通过使用代理来完成,但是有没有任何JS或Selenium的方法来获得这样的信息呢?
如果代理是唯一的方法,那么人们会使用(或实现)哪种方法来简化这样一个任务?只是在设置驱动程序之前用Java实现一些东西?
(The解决方案应该至少在Linux上工作,但最好也能在Windows上工作。我正在通过Java使用Selenium WebDriver。)
4条答案
按热度按时间rdlzhqv91#
为了便于将来参考,可以通过javascript从浏览器请求此信息。但是,在撰写本文时,还没有浏览器支持此特定数据的此功能。更多信息可以在此处找到。
同时,对于Chrome,您可以从性能日志中解析这些信息。
然后,您可以按如下方式获取此数据
如果像您的情况一样,您想知道单个页面加载的细节,可以使用加载前和加载后的时间戳,并且只获取该时间范围内的条目。
lokaqttq2#
Hakello的回答中提到的性能API现在得到了很好的支持(除了IE和Safari之外),而且使用起来很简单:
您可以使用
executeScript
运行该脚本,以获取自上次导航事件以来下载的字节数。5ktev3wc3#
是的,您可以使用BrowserMobProxy。这是一个Java jar,使用Selenium Proxy跟踪客户端的网络流量。如页面加载持续时间、不同服务的查询字符串等。您可以在www.example.com上找到它bmp.lightbody.net。此API将创建.har文件,其中包含JSON格式的所有这些信息,您可以使用在线工具http://www.softwareishard.com/har/viewer/读取这些信息
roqulrg34#
我已经用Python实现了这一点,这可能会保存一些时间。
要计算总数: