【问题标题】:Jmeter VIEWSTATE Count changes dynamicallyJmeter VIEWSTATE Count 动态变化
【发布时间】:2021-09-17 18:15:15
【问题描述】:

我正面临一个独特的具有挑战性的情况。我正在为 ASP .net 应用程序开发 J Meter 脚本。当我进行录制时,它会创建 127 个视图状态并提供计数。但是计数可以根据我们登录的用户增加或减少。我尝试手动关联所有值,如果脚本返回 127 则成功,但如果计数更改则失败。

我需要一些见解

  1. 如何将所有视图状态与单个正则表达式相关联。由于 Viewstate 从 __VIEWSTATE" id="__VIEWSTATE" value="xyz" /> 开始,__VIEWSTATE1" id="__VIEWSTATE" value="abc" />.... 到 __VIEWSTATE127" id="__VIEWSTATE127" value="123" />。
  2. 如何根据视图状态的计数构造请求负载。

POST 数据: __VIEWSTATEGENERATOR = 4CEEB656&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24txtNMSJob =&__ EVENTARGUMENT =&__ VIEWSTATE = A%2FRl38k0Tgiybffo1OLbt4qZXQWjv1lB3ieW87A0ZUFl6kwwCk58Jlu37%2FRGvuVMJ2mtz5zOwu3OcPtPR%2F7mLPde90%2F873dEQtvrv7TtKuhyAP%2Be4hAITEQBzZIFgRhowms6qoOcelX7AMa8idlVaf5%2FuZLSuIGgh%2BRfeooDg9b3HT3tDkY9YSoHTE9VgDNbZu6WyDtVmkBmd5xhXftET8sTVD58JhP3UycdEZYf7WQxhkHlPLUlGPC5CzKS8dhi2G9iYY2XTJsaNjwFfxEGv5uW4oSZ9KhY0rX3Q7DWwgHGXRI%2FNFieBAhziGCDIwqvTAVN%2B6o6TF1CJBhMcv8tizLxMFHa5TB5Z6KzN78luRc6J3E88IdCajbBzaT13c%2BqjrO0UjPZf2ypDl7%2FXLh1YdJNVBIl19UuftQoZ%2FZM9mFl8HBNKSjEe%2BQh9DqMNdi5oqcjd4UjYGl4cyrHn%2BzwPvfjnfeiPX1lNGrnzykeIUPYoV58hygZ&ctl00_ctl00_scrptmanScripts_HiddenField =&__ VIEWSTATEFIELDCOUNT = 9&ctl00% 24ctl00%24cphBaseContent%24CPH_Section4%24ContractorsGrid%24ctl02%24tbPrice = 0&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24ddlQuoteType =&ctl00%24ctl00%24cphBaseContent%24CPH_Section4%24ContractorsGrid%24ctl02%24tbName =&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24txtMKSubCont ractor = 0&__ EVENTVALIDATION = Z%2B4HxHWchCRKUUGSyPU5%2FaMbJ3YqImwp6UvxZdFKa4s%2B%2BxMF%2FXQV9M9ulkv8hn2igRVXZTBrl8dCablkMQIj025VkKji2Y6Ur3hDKKIQ%2F%2B1JC4zbrPLuIFgQ8VIHorOTvfe1F1DfMfcWxPDAWCrwSlp%2Fy1xU%2ByRDktLppsOggXpSQDDQyX%2B0dFKSaPzDfUlGqxAQjzR%2FgB%2F730nz0B%2Ff6acYFY8hpPMIi3t0dGmPK6Hh5%2FpqGudw4zrwvl%2FBoXlmEtLCfGehgfsmn4vXRxgYlWD30M5hqQskYa8ljQQqA6H9%2FqSLi1vKaYuEDbSo%2F8uDrZPhUPQIjx9tY8Q%2FluSW7Mtlfw%2BgwK9I29%2F8VLmCmYZAs%2Fc9Xp0uyZIJ%2FTDE8g0UYXKfJUP9pydprX0% 2FYXxEtbCE14rkNHaWQL2lDoxTmGIgSN8fWgQ%2B%2Bi0Dmw1EWoy2f9eSTggqYwskl6Po8bVvbk0ivncMGoy3b5H32wM6E4sxd5sztbm9gPBtmrM4tFEPxCktYJknpsRjEvkErVotyGWQjylFrGgQrGVCOSNI0ah7SVC51TKqGImZSMKrq1OUxA%2FCTaACsy5iz5DieWI170%2BTNtI%3D&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24txtHelpdeskRef =&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24txtQuoteDate = 17%2F09%2F2021&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24ddlContracts = 0&ctl00%24ctl00%24cphBaseContent% 24CPH_Section3%24LabourGrid%24ctl02%24LabourRateType=0&ctl00%24ctl00%24cphBase含量%24CPH_Section1%24txtDescription =&ctl00%24ctl00%24cphBaseContent%24CPH_Section5%24tbxComprehensiveC =&__ LASTFOCUS =&ctl00%24ctl00%24cphBaseContent%24CPH_Section1%24tbxBudgetType =&ctl00%24ctl00%24cphBaseContent%24CPH_Section2%24MaterialsGrid%24ctl02%24tbDesc =&ctl00%24ctl00%24cphBaseContent%24CPH_Section3% 24LabourGrid%24ctl02%24LabourRateAmount = 0&ctl00%24ctl00%24cphBaseContent%24CPH_Section3%24LabourGrid%24ctl02%24LabourType = 0&__ VIEWSTATE6 = j2dj4ouRMqfNDIhs4Dq5Vuz1zC%2BGiQb5uOQNoICtq3sjeRXHwa5SjV4uXYpGE95rLleqPl%2Bd0Pn%2FObMHZrSk5EYqOyw6zeE79ftoqWwjw8cl2q9LoHNsf3Wqyc8DoVzNgMEGIWo6eDBnR

Jmeter

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java groovy jmeter


【解决方案1】:

您可以使用Regular Expression Extractor 通过以下正则表达式提取值。

__VIEWSTATE([0-9]*)" id="__VIEWSTATE([0-9]*)" value="(.*?)"

使用模板$3$ 提取ID。

用于根据找到的匹配创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:'$1$' 表示第 1 组,'$2$' 表示第 2 组,等等。$0$ 表示整个表达式匹配的任何内容。

您可以使用 VIEWSTATE ID 计数

${VIEWSTATE_matchNr}

vars.get("VIEWSTATE_matchNr")

refName_matchNr - 找到的匹配数;可能是 0

【讨论】:

    【解决方案2】:
    1. 我不认为使用正则表达式是处理 HTML 数据的最佳方法,也许您应该考虑改用 CSS Selector Extractor

    2. 关于将所有这些“视图状态”动态添加到您的请求中,只能使用JSR223 PreProcessor 和以下示例代码来完成:

      1.upto(vars.get('viewstate_matchNr') as int, { counter ->
          sampler.addArgument('VIEWSTATE' + counter, vars.get("viewstate_" + counter))
      })
      

      演示:


    您确定这不是功能问题吗?我没有看到超过一个 VIEWSTATE 参数,而且 127 对我来说太多了,通常开发人员在需要时将多个值存储在单个视图状态中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多