我正在使用xpath提取器从响应数据中检索表单属性值。但是,此响应数据包含字符串“C& I”等数据,这导致以下SAXException
jmeter.extractor.XPathExtractor:处理时出现SAXException
(substring-after(//form[@id='headerForm']/@action,'/dashboard.xhtml?'))
对实体“I”的引用必须以“;”结尾分隔符。
我无法控制这些数据,因为它是从数据库中获取的。我尝试检查“使用整洁(宽容解析器)”选项。这会导致以下警告/错误
错误 - jmeter.util.XPathUtil:TidyException:第35行第31列 - 警告:修剪空< div>
回复第35行如下:
`<div style="clear: both;"></div>`
提取该属性值对于我的进一步处理至关重要。
答案 0 :(得分:5)
至于解决方案的一切,它可能会很快而且很脏但是对于单个问题总有更多的解决方案。
我建议使用jsoup为您解析HTML而不是xpath提取器。我假设您正在尝试提取特定表单的动作属性。
步骤1 - &gt;将jsoup-1.6.3.jar
或任何其他版本添加到JMETER_HOME\lib
步骤2 - &gt;在您的BeanShell PostProcessor
HTTP或任何其他
Sampler
步骤3 - &gt;在脚本大框中粘贴此代码:
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网址:
答案 1 :(得分:1)
源文档中的迷路&
在XML中不合法。从XML规范(强调我的)
可能会出现&符号(&amp;)和左尖括号(&lt;) 仅在用作标记分隔符时或在用于标记分隔符时以字面形式显示 注释,处理指令或CDATA部分。他们也是 在内部实体的字面实体价值内合法 宣言;见“4.3.2形成良好的解析实体”。 如果是的话 在其他地方需要,它们必须使用数字字符进行转义 引用或字符串“&amp; amp ;”和“&amp; lt ;”分别强>
解析器将&
解释为实体引用的开头,它希望以分号结束。
来源:
请注意,您所包含的错误(几乎可以肯定)无关。 Tidy只是指出div不包含任何内容(即它是空的)。