当前位置: 首页 > 知识库问答 >
问题:

jmeter在获取_VIEWSTATE和_EVENTVALIDATION参数时出现问题

广楚
2023-03-14

获取_VIEWSTATE和_EVENTVALIDATION参数时遇到一些问题。我正在使用post-procesor正则表达式提取器,并按如下方式配置它们:

参考名称:aspViewstate

正则表达式:name="__VIEWSTATE"id="__VIEWSTATE"值="(. ?)"

模板:1美元$

匹配号(随机为0): 1

默认值:ERROR_VIEWSTATE

参考名称: aspEventVal的

正则表达式:name="__EVENTVALIDATION"id="__EVENTVALIDATION"值="(. ?)"

模板:1美元$

匹配号(随机为0): 1

默认值:ERROR\u EventValidation

然后,Im在超文本传输协议中分别请求${aspViewstate}和${aspEventValidation}的每个参数的值。

我把正则表达式提取器放在GET请求的下面和POST请求的前面。

我包括一个调试采样器,我得到了“错误结果”:

aspEventValidation=ERROR_EventValidation
aspViewstate=ERROR_VIEWSTATE

请任何人帮我解释一下我错过了什么。。。。

更新:我正在使用CSS/JQuery提取器获取_VIEWSTATE,如下所示,并且正在工作:

CSS/JQuery Extractor Implementation:JSOUP

Reference Name: aspViewstate

CSS/JQuery Expression: input[id=__VIEWSTATE]

Attribute: value

Template: $1$

Match No. (0 for Random): 0

Default value: ERROR

但是对于_u事件,验证不起作用,并且我使用相同的sintax:

CSS/JQuery Extractor Implementation:JSOUP

Reference Name: aspEventValidation

CSS/JQuery Expression: input[id=__EVENTVALIDATION]

Attribute: value

Template: $1$

Match No. (0 for Random): 0

Default value: ERROR

我不知道什么是失败的。。。

关于VIEWSTATE我已经得到的值,但系统发送给我以下错误,就像是没有发送VIEWSTATE...

错误:

    <code><pre>

[FormatException: The input is not a valid Base64 string that contains a         character that is not Base 64, more than two filler characters or an invalid   character among the padding characters . ]
   System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength) +14115992
   System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) +162
   System.Convert.FromBase64String(String s) +56
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose) +102
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter2 formatter, String serializedState, Purpose purpose) +67
  System.Web.UI.HiddenFieldPageStatePersister.Load() +200

[ViewStateException: View state invalid 
    Client IP: 
    Port: 
    Referer: http://Art/WebLogiPortal/wfmLoginD.aspx?ReturnUrl=%2fArt%2fWebLogiPortal%2fwfmDefault.aspx
    Path: /Art/WebLogiPortal/wfmLoginD.aspx
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
    ViewState: ${aspViewstate}]

    [HttpException (0x80004005): The state information is invalid for this page and might be corrupted.]
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +157
    System.Web.UI.HiddenFieldPageStatePersister.Load() +12060517
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +12315765
    System.Web.UI.Page.LoadAllState() +51
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +12308619
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +12308137
    System.Web.UI.Page.ProcessRequest() +119
    System.Web.UI.Page.ProcessRequest(HttpContext context) +99
     System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +913
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp;        completedSynchronously) +165
    </pre></code>

我添加了一个调试后处理程序,我意识到发送到服务器的值实际上是变量的字符(即${viewstate}),而不是值,甚至不是默认值(错误)。可能会发生什么?

以下是调试后进程的响应日期:

HTTPSampler.response_timeout=
HTTPSampler.use_keepalive=true
    HTTPsampler.Arguments=wucLoginPortal_ScriptManager1_HiddenField=&__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=${aspViewstate}&__VIEWSTATEGENERATOR=${viewstateGenerator}&__EVENTVALIDATION=${aspEventValidation}&wucLoginPortal$__LBLHDN__=&wucLoginPortal$txtLoginAD=user1&wucLoginPortal$txtPasswordAD=user1&wucLoginPortal$txtDominioAD=art.com&wucLoginPortal$btnAceptarAD=Aceptar
TestElement.enabled=true
TestElement.gui_class=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui
TestElement.name=4 /Art/WebLogiPortal/wfmLoginD.aspx?ReturnUrl=%2fArt%2fWebLogiPortal%2fwfmDefault.aspx
TestElement.test_class=org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy
TestPlan.comments=Detected the start of a redirect chain

共有1个答案

丌官运诚
2023-03-14

我不建议使用正则表达式提取器获取viewstate和eventvalidation值,因为在更改属性位置的情况下,或者在多行上,或者有额外的空间可能会导致正则表达式失败。

JMeter提供2个测试元素,用于从HTML页面提取值,它们是:

  • XPath提取器
  • CSS/JQuery提取器

示例XPath定位器如下所示:

//input[@id='__VIEWSTATE']/@value

示例CSS选择器将是

input[id=__VIEWSTATE]

在“属性”输入中指定

有关更多详细信息和建议,请参阅ASP. NET登录测试与JMeter指南。

 类似资料:
  • 这是我第一次体验提升::property_tree我找不到一种方法来重现从留档(如何访问属性树中的数据)之后的树中获取值的方法。这是我为尝试属性树而编写的简单代码: 这是输出: 如<code>树所示。get_value(“whather”)在树中不返回值。get_value(“null”)不引发异常,并且<code>get_optional 我的环境是:

  • 本文向大家介绍Jmeter参数化获取序列数据实现过程,包括了Jmeter参数化获取序列数据实现过程的使用技巧和注意事项,需要的朋友参考一下 一、序列数据是什么 很简单,就是利用参数化能产生顺序值,比如 1,2,3,4,5,6 或者约定格式 001,002,003,004等。 二、jmeter 产生序列数据 2.1 利用函数助手对话框实现 在jmeter菜单处点击 工具 -- 函数助手对话框 --

  • 我在获取下拉列表的值时遇到了麻烦,我有学生实体和部分实体,它们之间有一个关系船,在jsp中它就像而不是这个在jsp中,我需要获得特定的bean属性名称,如 学生示范班 我的道实现是这样的 像金丝马龙一样。 控制器就像 我对这个问题的最后润色是如何获得指定bean属性名的下拉值(这里我想获得bean属性名称,如)com.chan.Eschool.student.model.Section@26552

  • 我想发送我的(在AngularJS控制器中)设置参数如下: 但是我不确定这是否是正确的方法,在Node.js中写什么:

  • 我对这段代码有一个问题: 当我保存它时,我会得到以下错误代码: 未捕获的ReferenceError:未定义birthDate 因此,基本上我正在训练获取值“05June 2001”,以便将其作为参数传递给Date函数,但我不能这样做,不过我可以从浏览器控制台访问该值,在那里我确实犯了错误,并提前表示感谢。

  • 我正在创建一个JavaFX应用程序,我已经很好地连接到了数据库。然而,当我从表中获取数据时,我得到了一个错误 组织。h2.jdbc。JdbcSQLException:未找到表“touch”;SQL语句:从讲座[42102-192]中选择名称 我100%确定我连接到数据库并且表肯定在那里,对为什么会这样有任何建议吗? hear是我的连接代码和我正在运行的代码,以便您可以看到 和正在运行的查询