Jmeter Token值提取

时间:2014-10-21 08:37:40

标签: regex jmeter

使用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。

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

2 个答案:

答案 0 :(得分:0)

使用此

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

或最好的是

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

你们两个都不会在typevalue之间工作,有一个你没有照顾的\n。现在可以。看看演示。

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

答案 1 :(得分:0)

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

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

  1. XPath Extractor
  2. CSS/JQuery Extractor
  3. XPath提取程序指南

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

    有关详细信息,请参阅Using the XPath Extractor in JMeter

    CSS / JQuery Extractor Guide

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

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

    希望这会有所帮助。