使用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提取器的外观:
正则表达式是这段文本:
name="__VIEWSTATE" id="__VIEWSTATE" value="(.+?)"
当我将该表达式输入RegExp Tester时,它会找到它。其他2个也可以工作:
这是我第一次使用JMeter,我怀疑我在错误的地方放了东西。
这是设置我的HTTP请求的方式:
这是整个项目的外观:
答案 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文章以了解更多详细信息。