目前我正在开设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 :(得分: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
。它将是匹配结果的变量或变量前缀//select[@name='fromPort']/option/text()
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
select[name=fromPort] > option
value
希望这会有所帮助。