[英]Trying to write a Javascript class to handle dynamically adding more data to my HTML. Need some guidance
[英]Need some guidance on executing Javascript with Jmeter
过去几周我一直在学习 Jmeter,所以它对我来说仍然是一个新鲜的主题。 我创建的最后一个测试包括登录、一些页面导航和最后的表单提交。 整个测试有效,但最后一个表单的内容没有提交到数据库,我相信这是因为这是通过 JavaScript 完成的,特别是这个脚本:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['WebForm1'];
if (!theForm) {
theForm = document.WebForm1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
据我所知,我应该使用 JSR223 Sampler 或 Post-processor 来执行脚本,但我不知道该怎么做。 我应该复制 JavaScript 代码以使其产生相同的结果还是我可以简单地重用原始 JavaScript ?
提前致谢!
编辑:我想我问得太早了。 我显然不能重用 JavaScript 代码。 我想应该使用 JMeterContext 和 JMeterVariables 中的方法来完成,我刚刚发现了这些方法。 我是否朝着正确的方向前进?
像 JMeter 这样的工具的想法是在协议级别(在本例中为 HTTP)复制用户行为。 JMeter 不会构建您网站的 DOM 表示,因此将无法执行您在浏览器中看到的 Javascript。 您应该使用 HTTP 请求采样器,选择 POST HTTP 方法并将表单数据放入参数部分。 所有 Javascript 都是纯客户端行为,因此不属于您的 JMeter 测试。
如果您已经尝试过并且失败了,请提供更多详细信息!
根据JMeter 项目主页:
JMeter 不是浏览器,它在协议级别工作。 就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,多个浏览器); 但是 JMeter 不会执行浏览器支持的所有操作。 特别是,JMeter 不执行 HTML 页面中的 Javascript。 它也不会像浏览器那样呈现 HTML 页面(可以将响应视为 HTML 等,但时间不包含在任何示例中,并且一次只显示一个线程中的一个示例)。
所以你不需要复制 JavaScript,你需要使用 JMeter 的HTTP 请求采样器复制这个 JavaScript 函数产生的HTTP POST 请求
您当前的请求“不工作”的最可能原因是缺少这些__EVENTTARGET
和__EVENTARGUMENT
动态参数的相关性或未正确实现相关性。
如果您只是记录了这些参数并且没有对它们做任何事情 - 您将无法成功重放您的脚本,因为每次访问应用程序时这些参数都有不同的值,因此需要将它们关联起来,例如算法:
__EVENTTARGET
和__EVENTARGUMENT
值并将它们存储到 JMeter 变量中查看ASP.NET Login Testing with JMeter文章以获得更全面的解释以及解决动态请求参数的示例。
另外不要忘记将HTTP Cookie Manager添加到您的测试计划中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.