JMeter XPath提取器SAXException

JMeter XPath提取器SAXException,xpath,jmeter,jsoup,Xpath,Jmeter,Jsoup,我使用xpath提取器从响应数据中检索表单属性值。但是,除了其他数据外,此响应数据还包含字符串“C&I”,这会导致以下异常 jmeter.extractor.XPathExtractor:处理时出现SAXException (在(//form[@id='headerForm']/@action,/dashboard.xhtml?')之后的子字符串) 对实体“I”的引用必须以“;”结尾定界符 我无法控制这些数据,因为它们是从数据库中获取的。我试着检查“使用整洁(宽容的解析器)”选项。这将导致以下警

我使用xpath提取器从响应数据中检索表单属性值。但是,除了其他数据外,此响应数据还包含字符串“C&I”,这会导致以下异常

jmeter.extractor.XPathExtractor:处理时出现SAXException
(在(//form[@id='headerForm']/@action,/dashboard.xhtml?')之后的子字符串)
对实体“I”的引用必须以“;”结尾定界符

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

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

答复第35行如下:

`<div style="clear: both;"></div>` ``
提取该属性值对于我的进一步处理至关重要。

源文档中的错误
&
在XML中是不合法的。来自XML规范(我的重点)


源文档中的符号和字符(&)和左尖括号(偏移的
&
在XML中是不合法的


符号(&)和左尖括号(对于所有有解决方案的问题,它可能是快速的和肮脏的,但对于单个问题总是有更多的解决方案

我建议使用来为您解析HTML,而不是xpath提取器

步骤1->将
jsoup-1.6.3.jar
或任何其他版本添加到
JMETER\u HOME\lib

步骤2->将
BeanShell后处理器添加到
采样器
HTTP或任何其他

步骤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}
变量,以便在测试中进一步使用

更新

因此,您不会与我创建的名为
Html提取器的jMeter后处理器代码纠缠在一起,这里是github url:


对于所有有解决方案的问题,它可能是快速而肮脏的,但对于单个问题总是有更多的解决方案

我建议使用来为您解析HTML,而不是xpath提取器

步骤1->将
jsoup-1.6.3.jar
或任何其他版本添加到
JMETER\u HOME\lib

步骤2->将
BeanShell后处理器添加到
采样器
HTTP或任何其他

步骤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}
变量,以便在测试中进一步使用

更新

因此,您不会与我创建的名为
Html提取器的jMeter后处理器代码纠缠在一起,这里是github url:


Ant,感谢您的回复。但是,当我执行prev.getRespon时……我得到的html不是来自当前请求(流是index.xhtml->dashboard.xhtml)。我需要从dashboard.xhtml提取数据。我在dashboard.xhtml对应的第二个HttpREquest下添加了JSoup代码。但是,我得到的html对应于index.xhtml。我尝试了curr.getREsponse…但是没有用。我在JSoup网站上找不到太多帮助。你能帮我解决这个问题吗。Thx,Karthikare您正在阅读名为dashboard.xhtml的文件吗?请您用一些附加信息更新您的问题,例如适当的结构、测试流程、屏幕截图以及提供附加信息的任何内容。很难理解当所有内容都放在一个句子中时,感谢您的回答。但是,当我执行prev.getRespon…时,我得到的html是不是来自当前请求(流是index.xhtml->dashboard.xhtml)。我需要从dashboard.xhtml提取数据。我在dashboard.xhtml对应的第二个HttpREquest下添加了JSoup代码。但是,我得到的html对应于index.xhtml。我尝试了curr.getREsponse…但是没有用。我在JSoup网站上找不到太多帮助。你能帮我解决这个问题吗。Thx,Karthikare您正在阅读名为dashboard.xhtml的文件吗?请您用一些附加信息更新您的问题,例如适当的结构、您的测试流程、屏幕截图以及提供附加信息的任何内容。当所有内容都放在一句话中时,很难理解