asp.net Web 表单的 JMeter 中的正则表达式提取器失败

Regular Expression Extractor failing in JMeter for asp.net web forms

我正在尝试使用 JMeter 登录 asp.net Web 表单应用程序。我将登录序列记录到 *.jmx 文件中,现在我正尝试使用正则表达式提取器 post 提取 __VIEWSTATE、__VIEWSTATEGENERATOR 和 __EVENTVALIDATION 隐藏输入]-处理器。

在所有 3 种情况下,JMeter 正在提取我想要提取到的变量的名称(例如“${viewstate}”),而不是我想要提取的值。这是当我查看 ViewResults Tree 和 select "Text":

时 RequestBody 的样子

ReturnUrl=%2F&__VIEWSTATEGENERATOR=%24%7Bviewstategenerator%7D&__EVENTARGUMENT=&__VIEWSTATE=%24%7Bviewstate%7D&ctl00%24ContentPlaceHolder1%24Login1%24LoginButton.x=25&ctl00%24ContentPlaceHolder1%24Login1%24Password=MyPassword%21&ctl00%24ContentPlaceHolder1%24Login1%24LoginButton.y=4&__LASTFOCUS=&ctl00%24ContentPlaceHolder1%24Login1%24UserName=MyUserName&__EVENTTARGET=&[ =]=%24%7Beventvalidation%7D

奇怪的是,如果我 select "RegExpTester" 在 ViewResults 树中测试我的正则表达式,它们似乎都有效。

例如,这是我的 __VIEWSTATE 提取器的样子:

正则表达式是这段文字:

name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"    

当我将该表达式输入正则表达式测试器时,它找到了它。其他 2 个也有效:

这是我第一次使用JMeter,我怀疑我用错了地方。

这是我的 HTTP 请求的设置方式:

这是整个项目的样子:

您认为这些价值来自哪里?您缺少一个 GET request which will open the login page, your test should not start from POST 请求。

执行 GET 请求后 - 您的正则表达式提取器将捕获视图状态和朋友,您将能够登录。

也考虑换成CSS Selector Extractors as using regular expressions to parse HTML is not the best idea

相关的CSS选择器表达式会像input[id=__VIEWSTATE]一样简单,使用value作为属性。同样关联剩余的动态值。如果需要,请参阅 ASP.NET Login Testing with JMeter 文章了解更多详细信息。