[英]In JMeter java api how to set POST Form values in a PreProcessor sampler?
我正在編寫一個預處理器,可以通過采樣器成功更新GET查詢字符串。
但是,如果我對POST使用相同的方法,盡管可以通過getArguments()列出FORM字段,但不會設置該值。
Arguments arguments = sampler.getArguments();
for (int i=0; i<arguments.getArgumentCount(); i++) {
Argument argument = arguments.getArgument(i);
if (argument.getName().equals("page_submission_id")) {
String newVal = "8743718386872";
argument.setValue(newVal);
System.out.println("Setting arg["+argument.getName()+"] to["+newVal+"]");
}
}
sampler.setArguments(arguments);
printArgs(arguments);
此輸出顯示Arguments值不變。
Setting arg[page_submission_id] to[8743718386872]
Arguments After
...
Found arg[page_submission_id] is[XXXXXXXXXXXXX]
...
在進一步深入jmeter代碼之后,有一個Attribute對象的“ runningVersion”屬性(通過isRunningVersion())設置為true。
我嘗試了幾種方法來解決這個問題:
誰能指出在發送前設置POST FORM字段值的官方方法?
謝謝
好吧,您為參數分配了一個新值,但是我看不到在哪里使用具有新值的參數來更新采樣器的參數。
我堅信KISS原則,因此建議您像下面這樣簡化腳本,而不是添加更多內容:
import org.apache.jmeter.config.Argument;
sampler.getArguments().removeArgument("page_submission_id");
sampler.addArgument("page_submission_id","8743718386872");
另外,我希望您使用的是JSR223 PreProcessor和Groovy語言 。
我設法解決了這個問題:
(在深入了解我的設置時,問題又回來了),方法是添加一個新的Argments對象的創建並插入(以相同的順序)具有我所需要的值的新Argument對象。 然后將采樣器設置為使用該新Arguments對象。
Arguments newArgs = new Arguments(); Arguments arguments = sampler.getArguments(); for (int i=0; i<arguments.getArgumentCount(); i++) { Argument argument = arguments.getArgument(i); HTTPArgument newArg = new HTTPArgument(); newArg.setName(arguments.getName()); if (arguments.getName().equals("field_to_replace")) { newArg.setValue("new value"); } else { newArg.setValue(arguments.getValue()); } newArgs.addArgument(newArg); } sampler.setArguments(newArgs);
我的看法是,這要歸結到我跳過的“ Argument.setValue()”所使用的setProperty()中的“ if(isRunningVersion())”測試。
盡管這似乎行得通(到目前為止,對於我的測試用例),但我很欣賞覆蓋它可能不是正確的正式方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.