我已保存'current_account_id'
和'current_workspace_id'
在下面的代码中。想要在下一个请求中使用这些ID,因为我必须将其设置为动态,因此我将“505520”替换为"${accountID}"
,将“505519”替换为"${workspaceID}"
,但它不起作用并抛出“没有命名属性'accountID'定义为“
然而,它适用于“退出”请求。任何人都可以告诉如何解决此问题?
.exec(http("Login")
.post("/j_security_check")
.headers(headers_9)
.formParam("j_username", username + ThreadLocalRandom.current.nextInt(endNum))
.formParam("j_password", password)
.resources(
http("Fetch_IDs")
.get("/desktop/side_nav.jsp")
.check(regex("""current_account_id=(\d+)""").saveAs("accountID"))
.check(regex("""current_workspace_id=(\d+)""").saveAs("workspaceID"))
.headers(headers_5),
http("request_11")
.get("/desktop/dashboard/index.jsp")
.headers(headers_5),
http("request_12")
.get("/global_nav.jsp")
.headers(headers_5),
http("request_13")
.post("/eventDataController")
.headers(headers_9)
.formParam("action", "viewevents")
.formParam("objectId", "")
.formParam("type", "Desktop")
.formParam("dashboardType", "desktop_events")
.formParam("forceReplace", "true")
// Doesnt work
.formParam("current_account_id", "${accountID}")
.formParam("current_workspace_id", "${workspaceID}")
.formParam("skipAccountCheck", "")
.formParam("skipWorkspaceCheck", ""),
http("request_14")
.post("/savedsearchdatacontroller")
.headers(headers_9)
.formParam("action", "dashboard_view")
.formParam("dashboardType", "Desktop")
.formParam("current_account_id", "505520")
.formParam("current_workspace_id", "505519"),
http("request_15")
.post("/wizardDataController")
.headers(headers_9)
.formParam("action", "view")
.formParam("current_account_id", "505520")
.formParam("current_workspace_id", "505519")))
.exec(http("Logout")
.post("/logoutcontroller")
.headers(headers_9)
.formParam("action", "logout")
.formParam("undefined", "")
//Here it works and fetches value
.formParam("current_account_id", "${accountID}")
.formParam("current_workspace_id", "${workspaceID}")
)
感谢。
答案 0 :(得分:1)
在您的情况下,您无法使用会话中的“accountID”,因为它尚未设置。
从资源块获取的请求是并行执行的。这意味着如果两个请求都位于同一资源块中,则无法将请求中保存的变量重用到其他请求中。
此外,用户名对每个用户始终具有相同的随机数。
.formParam("j_username", username + ThreadLocalRandom.current.nextInt(endNum))
如果你想为每个用户提供一个不同的随机数,你需要将一个函数传递给formParam,如下所示:
.formParam("j_username", _ => username + ThreadLocalRandom.current.nextInt(endNum))
答案 1 :(得分:0)
您将需要使用会话来实现这样:
声明一个全局变量:
if (sValue[i] & 128) {
... // MSB is set
}
按以下方式创建另一个exec:
var accountIDString = "";
var workspaceIDString = "";
它会起作用。