【问题标题】:Capture WebDriver requests in Jmeter在 Jmeter 中捕获 WebDriver 请求
【发布时间】:2016-04-08 15:07:40
【问题描述】:

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

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

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

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

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

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

  1. 打开浏览器窗口。

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

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

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

  5. 使用数据生成负载。

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

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多