JMeter:如何从线程组中的每个请求中删除本地 HTTP Header 管理器?

JMeter : How do I Remove local HTTP Header Manager from each Requests in the Thread Group?

这里有一张link的图片:https://i.stack.imgur.com/fIg3R.png

每个请求我都有本地 Header 管理器。我也有全球的。 [请看图片] 我想删除所有请求的本地 Header 经理。

我通过创建预处理器并编写 "sampler.getHeaderManager().removeHeaderNamed("HTTP Header 管理器");"在里面。但是,它不起作用。因此,它无法验证凭据。

我也试过"sampler.getHeaderManager().remove(0)"。这也不起作用。 remove(1) 忽略全局 header 管理器。

  1. 为您的 "global" header 经理取一个不同的名字
  2. 运行 你的测试通过 Taurus tool. Taurus naturally supports JMeter tests execution and adds some extra features on top, for instance Modifications for Existing Scripts。假设您的测试名为 test.jmx,相关的 Taurus 配置文件将简单如下:

    ---
    execution:
      scenario:
        script: test.jmx
        modifications:
          disable: HTTP Header Manager
    

    如果将其保存为 test.yml 并执行 Taurus 为:

    bzt test.yml -gui 
    

    JMeter 实例将启动并打开您的脚本,并禁用 Header 管理器元素。

有关此方法的更多信息,请参阅 Navigating your First Steps Using Taurus 文章。

目前无法以编程方式完全删除测试元素,您只能删除单个 headers。今后您可能需要取消勾选 HTTP(S) Test Script Recorder 下的 Capture HTTP Headers 复选框以避免这种情况:

这是我的建议。在执行以下步骤时必须小心。我按照这个技巧来替换动态值。

  1. 备份您的 JMeter 脚本

  2. 打开 notepad++ 中的脚本。

  3. 找到 Header 经理标签。它是这样的 <hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"><collectionProp name="HeaderManager.headers"/></HeaderManager><hashTree/>

如果你有多个Header Manager Name并且它的名字唯一,你可以在notepad++中使用regular expression

notepad++

中的 Reg ex 语法

<hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="(.+)" enabled="true"><collectionProp name="HeaderManager.headers"/> </HeaderManager><hashTree/>

  1. 使用 Find and Replace 将其替换为 empty 值。

While replacing, please take care of <hashtree></hashtree> tags, any conflicts will result in corruption in the script. Use Test Plan Check Tool plugin to validate your test plan. Please visit this link to know more https://jmeter-plugins.org/wiki/TestPlanCheckTool/

  1. 保存并在 JMeter 中打开。

之前

之后