我正在加载HTML页面时捕获所有请求。我的最终目标是创建一个报告,其中包含每个请求所花费的时间以及加载整个页面所花费的总时间。我曾尝试使用performance.getEntries()但它仅限于在缓冲区中存储150个请求。为了解决这个问题,我尝试设置performance.setResourceTimingBufferSize(size),但是当我刷新页面时,此缓冲区大小将重置为默认值150。
我想知道以下几点的解决方案,
PS:我使用Jmeter(模拟多个用户)使用web驱动程序采样器运行selenium脚本。应该使用硒来实现自动化方式。
答案 0 :(得分:1)
您可以使用BrowserMob proxy创建和启动代理服务器,该服务器将捕获数据并以.har
的形式保存在setUp Thread Group添加JSR223 Sampler并将以下代码放入“脚本”区域
import net.lightbody.bmp.BrowserMobProxy
import net.lightbody.bmp.BrowserMobProxyServer
import net.lightbody.bmp.proxy.CaptureType
def proxy = new BrowserMobProxyServer()
def captureTypes = new HashSet<>();
captureTypes.addAll(CaptureType.getAllContentCaptureTypes());
captureTypes.addAll(CaptureType.getHeaderCaptureTypes());
captureTypes.addAll(CaptureType.getCookieCaptureTypes());
proxy.setHarCaptureTypes(captureTypes);
proxy.start(8080)
proxy.newHar()
props.put('proxy', proxy)
设置Chrome Driver Config以使用步骤3中的代理
将tearDown Thread Group添加到您的测试计划中,并在另一个JSR223 Sampler中使用以下代码将WebDriver采样器发出的请求存储到.har文件中:
def proxy = props.get('proxy')
proxy.getHar().writeTo(new File('some.har'))
proxy.stop()
就是这样,现在你应该在测试执行期间生成.har文件。
参考文献:
答案 1 :(得分:0)
为了您的目标,您可以尝试https://gtmetrix.com/。这将为您提供有关加载时间和瀑布模型中所有请求的报告,例如浏览器。此外,您可以下载pdf的完整报告,并可以进行比较和重新测试。 在那里你也可以下载HAR文件。
尽管如此,它与硒无关,但可能符合您的目标,而且可以实现自动化。