1

我正在使用 xpath 提取器从响应数据中检索表单属性值。但是,此响应数据包含字符串“C&I”等数据,这会导致以下 SAXException

jmeter.extractor.XPathExtractor: SAXException while processing (substring-after(//form[@id='headerForm']/@action,'/dashboard.xhtml?')) 对实体“I”的引用必须以';'结尾 分隔符。

我无法控制这些数据,因为它是从数据库中获取的。我尝试检查“使用整洁(容错解析器)”选项。这会导致以下警告/错误

错误 - jmeter.util.XPathUtil:TidyException:第 35 行第 31 列 - 警告:修剪空 <div>

响应的第 35 行如下:

`<div style="clear: both;"></div>`

提取该属性值对于我的进一步处理至关重要。

4

2 回答 2

5

至于所有有解决方案的东西,它可能又快又脏,但对于一个问题总是有更多的解决方案。

我建议使用jsoup来为您解析 HTML,而不是使用 xpath 提取器。我假设您正在尝试提取特定表单的操作属性。

第 1 步 -> 将jsoup-1.6.3.jar或任何其他版本添加到您的JMETER_HOME\lib

第 2 步 -> 将 a 添加BeanShell PostProcessor到您的SamplerHTTP 或任何其他

第 3 步 -> 在脚本大框中粘贴此代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

String html = prev.getResponseDataAsString(); // get response from your sampler
Document doc = Jsoup.parse(html);
String formAction = doc.select("#headerForm").attr("action");
vars.put("action", formAction);

HTML 选择器是基于 jquery 的。所以它可以做非常漂亮和整洁的事情。无论如何,您应该有${action}变量可以在测试中进一步使用。

更新

所以你不要纠结于我创建的 jMeter 后处理器的代码,Html Extractor这里调用的是 github url:

https://github.com/c0mrade/Html-Extractor

于 2012-07-12T12:51:58.497 回答
1

源文档中的杂散&在 XML 中是不合法的。来自 XML 规范(强调我的)

与号字符 (&) 和左尖括号 (<) 仅在用作标记分隔符时,或在注释、处理指令或 CDATA 部分中时,才能以其文字形式出现。它们在内部实体声明的文字实体值内也是合法的;请参阅“4.3.2 格式良好的解析实体”。如果在其他地方需要它们,则必须使用数字字符引用或字符串“ & ;”对它们进行转义 和“ < ;” 分别

解析器将 解释&为实体引用的开头,它期望以分号结尾。

资源:

请注意,您包含的错误(几乎可以肯定)是不相关的。Tidy 只是指出 div 不包含任何内容(即它是空的)。

于 2012-07-11T21:36:25.597 回答