在Jmeter中捕获WebDriver请求

时间:2016-04-08 15:07:40

标签: jmeter jmeter-plugins

我将使用Jmeter测试的其中一项服务具有复杂的授权机制,需要一些基于CS的步骤(JavaScript)。因此,要设置会话,我必须使用WebDriver,因为Jmeter不能(并且实际上不应该)处理JS。

我通过以下方式实现:在每个线程的开头,我在真实浏览器中打开资源(通过Jmeter WebDriver插件),完成授权,存储由服务器设置的浏览器cookie,然后使用这些cookie生成在定义的HTTP会话中使用标准Jmeter逻辑加载。

这个架构工作正常,我在不同的负载测试中成功使用它。

但是现在我测试的服务不仅需要cookie,还需要浏览器在POST中作为授权过程的一部分发送的一些重要参数。为了证明我的请求属于同一个会话,我应该从请求中提取一些敏感参数而不是响应(可以轻松完成)。 我无法在DOM中的任何位置找到这些值,看起来这些值是由附加到响应页面的JS生成的。

所以,我的问题是:有没有办法从WebDriver发送的请求中捕获参数?

我知道在Jmeter中启动的浏览器所做的所有请求都不可见。我看到的唯一想法是动态使用Jmeter请求记录器:

  1. 打开浏览器窗口。

  2. 将Jmeter定义为此浏览器的代理。

  3. 使用记录器捕获浏览器在Jmeter中发送的请求。

  4. 以某种方式从请求中提取敏感数据。

  5. 使用数据生成负载。

  6. 任何想法都赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:0)

通过使用BeanShell sampler运行本地代理服务器(BrowserMob Proxy项目)解决了该问题。我将WebDriver Sampler重新定位到此代理,使用浏览器执行所需操作,然后以HAR格式存储捕获的数据并对其进行处理(从请求中提取所需数据)。然后只需将有价值的请求参数存储在变量(或属性)中,并在HTTP采样器中以常规方式使用它们来生成负载。希望将来可以帮助其他人。