在 Jmeter 中捕获 WebDriver 请求

Capture WebDriver requests in Jmeter

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

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

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

但现在我测试的服务不仅需要 cookie,还需要浏览器在 POST 中作为授权过程的一部分发送的一些重要参数。为了证明我的请求属于同一个会话,我应该从 request 中而不是从响应中提取一些敏感参数(这很容易完成)。 我在 DOM 的任何地方都找不到这些值,这些值似乎是由附加到响应页面的 JS 生成的。

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

我了解浏览器发起的所有请求在Jmeter 中是不可见的。我看到的唯一想法是动态使用 Jmeter 请求记录器:

  1. 打开浏览器window.

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

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

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

  5. 使用数据产生负载。

任何想法表示赞赏。提前致谢!

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