2

我想提取 VIEWSTATE 值和 EVENTVALIDATION 值,但我没有。如何从此文本中提取两个字符串(viewstate 和 eventvalidation)?

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="DAwNEAIAAA4BBQAOAQ0QAgAADgEFAQ4BDRACAAAOAQUTDgENEAIAAA4BBQUOAQ0QAhAMDA8DAQlEYXRhQm91bm=" />


 <!--
        <div class="FullWidth FooterMa
            <div class="container_24 clearf
                <div class="grid_14 clearfix eisk-info alpha suffix
                    <p class="grid_14 branding-x2 alpha" title="" style="text-align:rig

                    <p style="text-align:rig

                </
            </
        </
    -->

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="GwABAAAA/////wEAAAAAAAAADwEAAAACAAAACAZFC0eJh7q7CwA=" />
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
4

4 回答 4

2

试试那些正则表达式:

<input.*id="__(?:VIEWSTATE|EVENTVALIDATION)"\s+value="([^"]+)"\s+/>

演示

http://regex101.com/r/iZ4kQ7

于 2014-01-21T10:30:56.923 回答
2

使用正则表达式解析 HTML 不是一个好主意,尤其是多行表达式,因为轻微的标记更改会导致您的所有努力都付诸东流。您可以尝试使用XPath Extractor Post Processor,如下所示:

  • 参考名称:test
  • XPath 查询://输入[@id='_ VIEWSTATE']/@value | //输入[@id=' _EVENTVALIDATION']/@value

您应该能够将VIEWSTATE 称为 JMeter 变量${test_1},将 EVENTVALIDATION 称为${test_2}JMeter 变量。

Debug SamplerView Results Tree Listener的组合对于查看 JMeter 属性和变量非常方便,并可用于调试正则表达式和其他提取器。

于 2014-01-21T13:58:36.397 回答
0

第一个正则表达式提取器将抓取页面的 VIEWSTATE 元素并将其存储在 JMeter viewState 变量中。通过以下方式在 JMeter 中添加新的正则表达式提取器:

  • 右键单击您的线程组
  • 选择添加 -> 后处理器 -> 正则表达式提取器

配置如下:

  • 参考名称:viewState
  • 正则表达式:name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
  • 模板:$1$
  • 数学编号:1
  • 默认值:错误

查看状态提取器

将 EVENTVALIDATION 元素存储在 eventValidation 变量中的正则表达式提取器。再次:

  • 右键单击您的线程组
  • 选择添加 -> 后处理器 -> 正则表达式提取器

配置如下:

  • 参考名称:eventValidation
  • 正则表达式:name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"
  • 模板:$1$
  • 数学编号:1
  • 默认值:错误

提取事件验证

现在我们已经提取了 viewState 和 eventValidation 值,我们需要在 POST 到我们的应用程序时包含它们。在我的运行中,这只发生在登录页面上。

  • 在测试计划的记录控制器中选择您的登录页面 POST,
  • 将 __VIEWSTATE 参数设置为 ${viewState},
  • 将 __EVENTVALIDATION 参数设置为 ${eventValidation}。

在登录请求中注入变量

您将需要对具有这些查询/发布参数的所有请求执行此操作。

于 2017-02-28T10:16:28.800 回答
0

我遇到了同样的问题,但我使用正则表达式提取器将它们分成2 个单独的变量:

对于事件验证:

Reference Name: eventValidation
Regular Expression: name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.+?)"
Template: $1$
Match No.(0 for Random): 1

对于 VIEWSTATE:

Reference Name: viewState
Regular Expression: name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
Template: $1$
Match No.(0 for Random): 1

将它们与 ${viewState} 和 ${eventValidation} 一起使用。

于 2017-02-28T10:06:22.017 回答