使用XPath Extractor时如何忽略JMeter中有关html标记的错误

时间:2014-01-29 19:43:52

标签: jmeter

我成功地在我的JMeter测试中添加了一个XPath Extractor。现在,我在JMeter.log中收到错误,抱怨我们的一个网页的2个html标签。这些标签由我们创建,是我们可以在代码中使用的标签。但是,JMeter并不喜欢他们。有什么地方我可以输入这些标签让JMeter知道排除检查它们。

让我们说标签是:

为XXXXX 和 XXXXX

这是JMeter日志信息:

2014/01/29 14:27:18 WARN - jmeter.util.XPathUtil:整洁错误:第25行第4列 - 错误:无法识别! 第255行第18列 - 错误:无法识别! InputStream:给出的Doctype是“” InputStream:文档内容类似于HTML 4.01 Transitional 警告33次,发现2次错误! 此文档存在必须先修复的错误 使用HTML Tidy生成整理版本。

如果我在测试中禁用了XPath Extractor,我就不会再遇到这些错误了。所以,我知道XPath Extractor带来了这个。但是,我需要XPath Extractor来获取运行测试所需的其他一些信息。所以,我不能删除它。我有什么想法可以忽略这两个新错误吗?

之前我使用过HTML Assertion,并为其他项目将Error Threshhold设置为2。但是,这似乎没有帮助。

*编辑:另外,我在XPath Extractor的“XML解析选项”中选中了“Use Tidy”。

2 个答案:

答案 0 :(得分:1)

根据您的错误的WARN级别,您看起来已经检查过Show warningsReport Errors或两者。

如果您的网页不符合XHTML / XML标准,则需要选中Use Tidy

如果您的服务器响应从Tidy的角度来看“过于破碎”,您可以考虑使用后处理器来获取所需的数据:

一般情况下,我建议使用HTML Assertion检查页面,因为描述的情况对我来说是一个真正的问题。严重破坏的页面可能会被错误地渲染,而不会被搜索引擎等提取。

答案 1 :(得分:0)

德米特里的答案已经是正确的了。我只想添加我为解决问题所做的工作,因为它可能对其他人有帮助。

我最终成功使用了正则表达式提取器(最后:-))。我偶然发现了这个非常有帮助的页面:

http://jmeter.apache.org/usermanual/regular_expressions.html
( section 20.2 )

因此,在JMeter中,我将一个正则表达式提取器作为子请求添加到我试图从中提取信息的HTTP请求中。然后,我最好的新朋友是View Results Tree下的XPath Tester和RegExp Tester。这样可以更快速地测试表达式是对还是错。我在正则表达式提取器的正则表达式字段中得到了这个结果:

name="token" value="(.+?)"

我意识到,对于那些将来阅读本文的人来说,如果你在网上找到的某个表达不适合你,你可以建立一个表达式。当然,我从那个页面找到了我的,但我也发现如果我不幸运,我可以如何建立起来。我的意思是什么?

在我在JMeter网站上找到显示示例的部分之前,我尝试了这个:

1. Ran my test
2. Looked at View Results Tree I added to the HTTP Request I was trying to pull the value from
3. In the View Results Tree, I clicked on drop down to change it to RegExp Tester
4. Started typing in many things to see what would match and not match into the RegExp Tester.  I tried:
4a. id="token" and this retrieved information
4b. id="token"/@value and this did not retrieve anything
4c. name="token" and this retrieved information
4d. name="token" value="(.+?)" and this retrieved the data I was after

希望这有助于某人!