JMeter:JavaScript未在响应数据集中返回精确数据

时间:2017-09-01 07:24:37

标签: jmeter

众所周知,JMeter目前还不支持JavaScript,但是有没有其他方法可以使用正则表达式提取器从注释中提取数据(使用浏览器无法生成确切的响应)它作为另一个HTTP请求的参数?

注意:在响应页面中获取消息为"需要JavaScript。此Web浏览器不支持此Web浏览器中的JavaScript或JavaScript。"

2 个答案:

答案 0 :(得分:0)

我认为您正在查看 HTML视图。正如文件所述:

  

HTML视图尝试将响应呈现为HTML。渲染的HTML很可能与任何Web浏览器中的视图相比较差;但是,它确实提供了快速近似,有助于初始结果评估。   不下载图像,样式表等。

在您的情况下,该视图不是很有用,因为页面包含.panel { background: "class(col-sm-4)"; } 标记,这可确保您只看到一条有关遗失JavaScript的消息。所以不要看它,使用文本模式,这将为您提供实际的页面源。

您似乎遇到的另一个困惑是JavaScript有某种“响应数据”。它不是。 JavaScript是一种客户端技术,而JMeter直接使用HTTP请求/响应。因此,当客户端发出新的HTTP请求(可能是JavaScript代码,用户操作或其他任何结果)时,此类请求的JMeter表示始终是相同的:HTTP Sampler,它有一些响应数据,正如我所说,在文本模式下查看。

所以底线是:你可能没有记录或播放脚本的问题,你只是没有正确检查它。

答案 1 :(得分:0)

如果您发送与浏览器相同的请求,则应获得相同的响应。如果您只收到有关未启用JavaScript的错误消息 - 您的测试无法正常运行,并且不会模仿真实浏览器发送的所有请求,并且准确率达到100%(即您只发送主要请求使用JMeter,而浏览器几乎没有AJAX requests从服务器获取数据并实际呈现内容。

这也意味着您的测试没有多大意义,因为每个JMeter虚拟用户都需要使用真实浏览器代表真实用户尽可能接近所有内容(cookiesheaderscachethink times等)

所以我建议接下来的步骤:

  1. 确保您有相关性
  2. 确保您遵循How to make JMeter behave more like a real browser文章中的建议。
  3. 完成后 - 使用FiddlerWireshark之类的嗅探工具比较浏览器和JMeter发送的请求,请求应完全相同(除了需要的动态数据)相关)。如果存在不一致或缺少请求,则需要修改JMeter配置,以便JMeter请求完全匹配浏览器。