JMeter的asp.net网络表单无法使用正则表达式提取器

时间:2019-02-13 14:39:04

标签: asp.net webforms jmeter viewstate

使用JMeter,我尝试登录到asp.net Web窗体应用程序。我将登录序列记录到一个* .jmx文件中,现在我正尝试使用正则表达式提取器后处理器提取__VIEWSTATE,__ VIEWSTATEGENERATOR和__EVENTVALIDATION隐藏输入。

在所有3种情况下,JMeter都提取我要提取的变量的名称(例如“ $ {viewstate}”),而不是要提取的值。这是当我查看ViewResults树并选择“文本”时RequestBody的样子:

ReturnUrl =%2F&__ VIEWSTATEGENERATOR =%24%7Bviewstategenerator%7D&__ EVENTARGUMENT =&__ VIEWSTATE =%24%7Bviewstate%7D&ctl00%24ContentPlaceHolder1%24Login1%24LoginButton.x = 25&ctl00%24ContentPlaceHolder1%2424LoginButton。%= y = 4&__ LASTFOCUS =&ctl00%24ContentPlaceHolder1%24Login1%24UserName = MyUserName&__ EVENTTARGET =&__ EVENTVALIDATION =%24%7Beventvalidation%7D

奇怪的是,如果我在ViewResults树中选择“ RegExpTester”并测试我的正则表达式,那么它们似乎都可以正常工作。

例如,这是我的__VIEWSTATE提取器的外观:

enter image description here

正则表达式是这段文本:

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

当我将该表达式输入RegExp Tester时,它会找到它。其他2个也可以工作:

enter image description here

这是我第一次使用JMeter,我怀疑我在错误的地方放了东西。

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

enter image description here

这是整个项目的外观:

enter image description here

1 个答案:

答案 0 :(得分:1)

您期望这些值来自何处?您缺少一个GET请求,该请求将打开登录页面,您的测试不应从POST请求开始。

一旦执行GET请求,您的正则表达式提取器将捕获viewstate和好友,您将能够登录。

还考虑将CSS Selector Extractors切换为using regular expressions to parse HTML is not the best idea

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