【问题标题】:Jmeter Token value extractionJmeter Token值提取
【发布时间】:2017-04-13 15:29:10
【问题描述】:

使用 Jmeter,我尝试使用正则表达式提取器从以下内容中提取标记的值:

<input name="__RequestVerificationToken" type="hidden" 
    value="BeRYiSIRjZoQHq4VW8qbkgXlnnzdUINpFNoYF_ugx-FRk0tkImbQPhwyYjyz_0Q-w6F2A0gDOfMZrdklD6rVn6-QnYggfImb55f90V7nrD_kbSkT3-y3gPqoTFg0ynTBLyX5Lw2" />

当我使用以下表达式时:

name="__RequestVerificationToken" type="hidden" value="(.+?)"

该值未提取。

经过几次搜索后,我使用了以下表达式:

name="__RequestVerificationToken" type="hidden" value="([A-Za-z0-9-_]+?)"  

这有效,但我不知道为什么:d。

我的问题:为什么第一个表达式不起作用,因为它基本上告诉提取任何匹配一次或多次的字符。

【问题讨论】:

  • 在查看结果树监听器中使用正则表达式测试器,看看你得到了什么。我认为根据给定的输入,这两个语句是等效的。这 ?除非有以下数据,否则是多余的。

标签: regex jmeter


【解决方案1】:

使用这个

name="__RequestVerificationToken" type="hidden"\s*value="(.+?)"

或者最好的是

name="__RequestVerificationToken" type="hidden"\s*value="([^"]*)"

你的两个都不能工作,因为在 typevalue 之间有一个 \n 你没有处理。现在它工作了。查看演示。

http://regex101.com/r/dK1xR4/14

【讨论】:

    【解决方案2】:

    首先,don't use Regular Expressions to extract data from HTML。即使是轻微的 DOM 更改,它也是复杂且非常脆弱的。

    JMeter 提供以下组件来从 HTML 响应中提取数据:

    1. XPath Extractor
    2. CSS/JQuery Extractor

    XPath 提取器指南

    • 将 Xpath Extractor 添加为产生该响应的请求的子项
    • 配置如下:
      • 参考名称:任何有意义的名称,即token
      • XPath 查询://input[@name='__RequestVerificationToken']/@value
      • 如果您的响应不是有效的 XHTML,请检查 Use Tidy
    • 在需要时将提取的值称为${token}${__V(token)}。请记住,JMeter 变量范围仅限于当前线程组。

    欲了解更多信息,请参阅Using the XPath Extractor in JMeter

    CSS/JQuery 提取器指南

    • 将 CSS/JQuery 提取器添加为生成该身份验证令牌响应的请求的子项
    • 配置如下:
      • 参考名称:任何有意义的名称,即token
      • CSS/JQuery 表达式:input[name=__RequestVerificationToken]
      • 属性:value
    • 在需要时将提取的值称为${token}${__V(token)}。适用于 JMeter 变量范围的相同限制。

    有关如何构建 CSS 选择器的参考,请参阅 JSoup selector syntax 指南。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2021-12-15
      相关资源
      最近更新 更多