Qta*_*tax 9 javascript java firefox selenium selenium-webdriver
使用Selenium或JavaScript,您如何获得(通过网络)已加载页面的传输大小(字节),包括所有内容,图像,css,js等?
首选大小是通过网络传输的大小,即压缩的大小,仅用于发出的请求等.
这是您通常可以在开发工具中看到的,在网络状态栏的右侧:

如果那是不可能的,那么只需要获得所有已加载资源的总大小(没有压缩等)吗?那将是一个可以接受的选择.
浏览器是Firefox,但如果可以使用其他一些兼容的Selenium浏览器也可以接受.
我想这可以使用代理完成,但有没有任何JS或Selenium方式来获取这些信息?
如果代理是唯一的方法,哪一个人可以使用(或实现)来保持这样的任务简单?在设置驱动程序之前用Java实现一些东西?
(该解决方案至少应该在Linux上运行,但最好也适用于Windows.我通过Java使用Selenium WebDriver.)
为了将来参考,可以通过 JavaScript 从浏览器请求此信息。然而,在撰写本文时,还没有浏览器支持此特定数据的此功能。更多信息可以在这里找到。
同时,对于 Chrome,您可以从性能日志中解析此信息。
//Enable performance logging
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
capa.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
//Start driver
WebDriver driver = new ChromeDriver(capa);
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样获取这些数据
for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)) {
if(entry.getMessage().contains("Network.dataReceived")) {
Matcher dataLengthMatcher = Pattern.compile("encodedDataLength\":(.*?),").matcher(entry.getMessage());
dataLengthMatcher.find();
//Do whatever you want with the data here.
}
Run Code Online (Sandbox Code Playgroud)
如果像您的情况一样,您想了解单个页面加载的具体信息,您可以使用加载前和加载后时间戳,并且仅获取该时间范围内的条目。
Hakello 的答案中提到的性能 API 现在得到了很好的支持(除了 IE 和 Safari 之外),并且使用起来很简单:
return performance
.getEntriesByType("resource")
.map((x) => x.transferSize)
.reduce((a, b) => (a + b), 0);
Run Code Online (Sandbox Code Playgroud)
您可以运行该脚本来executeScript获取自上次导航事件以来下载的字节数。无需设置或配置。
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |