使用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。
我的问题:为什么第一个表达式没有用,因为基本上告诉我提取任何匹配一次或多次的字符。
答案 0 :(得分:0)
使用此
name="__RequestVerificationToken" type="hidden"\s*value="(.+?)"
或最好的是
name="__RequestVerificationToken" type="hidden"\s*value="([^"]*)"
你们两个都不会在type
和value
之间工作,有一个你没有照顾的\n
。现在可以。看看演示。
答案 1 :(得分:0)
首先,don't use Regular Expressions to extract data from HTML。即使是轻微的DOM更改,它也很复杂且非常脆弱。
JMeter提供以下组件以从HTML响应中提取数据:
XPath提取程序指南
token
//input[@name='__RequestVerificationToken']/@value
Use Tidy
框${token}
或${__V(token)}
。请记住,JMeter变量范围仅限于当前线程组。 有关详细信息,请参阅Using the XPath Extractor in JMeter
CSS / JQuery Extractor Guide
token
input[name=__RequestVerificationToken]
value
${token}
或${__V(token)}
。对JMeter变量范围的相同限制适用。 有关如何构建CSS选择器的参考,请参阅JSoup selector syntax指南。
希望这会有所帮助。