2014-05-12 61 views
1

目前我正在做一个关于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>  
+0

你到目前为止尝试过什么? – piotrekkr

+0

到目前为止,我尝试过“([A-Za-z] +)”来提取城市名称。对于乘客号码,

回答

3

这是因为正则表达式匹配特定字符串使用正则表达式提取一个贫穷的现状。

您想基于DOM进行匹配,因此请尝试使用XPath提取器。

您的具体情况粗略的例子是:

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

这里的讲解,如果你想一些帮助: http://blazemeter.com/blog/using-xpath-extractor-jmeter-0

0

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

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

的XPath提取

添加XPath Extractor因为这是回国配置了端口的数据如下请求的小孩:

  • 参考名称:任何有意义的事,即port。这将是对比赛变量或变量前缀导致
  • XPath查询://select[@name='fromPort']/option/text()
  • 重要:如果你的反应是不是XML/HTML标准 - 检查Use Tidy中,它使XPath的提取解析无效的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

希望这会有所帮助。