Jmeter用于提取的正则表达式

时间:2014-05-12 19:37:27

标签: regex jmeter

目前我正在开设JMeter课程,如果你能指出我正确的方向,我会感激不尽。 使用正则表达式提取器我正在尝试编写正则表达式,以便从参数化原因中提取下拉列表中的值。但是,使用我的表达式似乎提取页面中该页面中具有“选项值”的所有内容,即我无法使表达式特定于特定的下拉列表?非常感谢

我试过了:

OPTION VALUE="([A-Za-z]+)"

以下是相关的HTML:

<SELECT NAME="fromPort">
    <OPTION VALUE="Acapulco">Acapulco
    <OPTION VALUE="Frankfurt">Frankfurt
    <OPTION VALUE="London">London
    <OPTION VALUE="New York">New York
    <OPTION VALUE="Paris">Paris
    <OPTION VALUE="Portland">Portland
    <OPTION VALUE="San Francisco">San Francisco
    <OPTION VALUE="Seattle">Seattle
    <OPTION VALUE="Sydney">Sydney
    <OPTION VALUE="Zurich">Zurich
</SELECT>     

2 个答案:

答案 0 :(得分:3)

使用正则表达式提取器的情况很糟糕,因为正则表达式用于匹配特定的字符串。

您希望根据DOM进行匹配,因此请尝试使用XPath提取器。

您的情况的一个粗略的例子是:

/html/body/select[@name="fromPort"]/option/text()

如果您需要帮助,可以在此处获得教程: http://blazemeter.com/blog/using-xpath-extractor-jmeter-0

答案 1 :(得分:0)

不要使用正则表达式来提取HTML数据。有关详细信息,请参阅RegEx match open tags except XHTML self-contained tags

JMeter提供2个后处理器,用于处理HTML数据。

XPath Extractor

添加XPath Extractor作为请求的子节点,该请求返回如下配置的端口数据:

  • 参考名称:任何有意义的内容,即port。它将是匹配结果的变量或变量前缀
  • XPath查询://select[@name='fromPort']/option/text()
  • 重要:如果您的回复不符合XML / HTML - 请检查Use Tidy框,它会使XPath Extractor解析无效的XML / XHTML响应。

输出将如下:

port=Acapulco
port_1=Acapulco
port_10=Zurich
port_2=Frankfurt
port_3=London
port_4=New York
port_5=Paris
port_6=Portland
port_7=San Francisco
port_8=Seattle
port_9=Sydney
port_matchNr=10

<强> CSS / JQuery_Extractor

另一个选择是使用CSS/JQuery extractor,它允许使用CSS和/或JQuery表达式来获取响应中有趣的部分。

例如,如果您正在寻找随机端口,则以下配置可能会有所帮助:

  • 参考名称:再次,有意义的事情,例如port
  • CSS / JQuery表达式:select[name=fromPort] > option
  • 属性:value

希望这会有所帮助。