jmeter - 在 Jmeter 中使用动态输入的正则表达式(正则表达式提取器)
问题描述
我有一个关于 Jmeter 正则表达式提取器的查询。我正在尝试实现 1 个场景,但无法做到这一点。以下是详细信息:
要求 :
在 Jmeter 中,我定义了用户定义的变量:String VAR = KZ
现在我正在尝试使用正则表达式提取器,以便从 HTML 响应中,正则表达式将匹配 HTML 中的 VAR 值(定义如下)并将获取跨度类名称,因为我需要为 KZ 设置复选框。
要求是通过用户定义的变量来处理复选框 ON 功能,这意味着我不想基于用户定义的变量硬编码类名(这将是 td 值,即在本例中 KZ)我必须使用 Regex Extractor 获取类名. 有人可以帮助如何进行吗?
下面是 HTML 代码:
<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl94" type="checkbox" name="$ctl95$"
onclick="return validatecheck();" /></span>
</td>
<td style="width: 41.2%;"> KZ </td>
<td style="width: 0%; display: none;"> 5581357 </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM </td>
</tr>
<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl95" type="checkbox" name="$ctl95$"
onclick="return validatecheck();" /></span>
</td>
<td style="width: 41.2%;"> TM </td>
<td style="width: 0%; display: none;"> 5581358 </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM </td>
</tr>
<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl96" type="checkbox" name="$ctl96$"
onclick="return validatecheck();" /></span> </td>
<td style="width: 41.2%;">TR </td>
<td style="width: 0%; display: none;"> 5581359 </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM </td>
</tr>
解决方案
使用正则表达式解析 HTML并不是最好的主意,因为:
- 它们很难开发和/或维护
- 它们对标记更改非常敏感,因此很脆弱,即如果属性的顺序发生更改或某些内容将进入新行 - 它只会破坏您的正则表达式
所以我建议使用另一个可以直接使用 DOM 的后处理器,例如XPath Extractor
将获取KZ
文本上方 span 的类名的相关 XPath 查询将类似于:
//td[contains(text(),'KZ')]/preceding::*/span/@class
当然你可以KZ
用 JMeter 变量参考代替,即
//td[contains(text(),'${VAR}')]/preceding::*/span/@class
但是,您将无法使用View Results Tree侦听器的 XPath Tester 模式测试您的查询,您将不得不使用Debug Sampler来可视化结果变量。
查看XPath 教程和在 JMeter 中使用 XPath 提取器指南以熟悉 XPath 语言。
另请注意,根据JMeter 项目主页:
JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,是多个浏览器);但是 JMeter 并不执行浏览器支持的所有操作。特别是,JMeter 不执行HTML 页面中的 Javascript。
所以我不相信获取跨度类名会解决你的问题,很可能你需要发送底层输入名称作为参数,所以你应该寻找
//td[contains(text(),'KZ')]/preceding::*/span/input/@name
推荐阅读
- python-3.x - Pillow & Tkinter 不显示具有透明度的 PNG
- java - 在 JFrame 中搜索
- r - 基于通用名称的值匹配+附加字段的最大值?(右)
- c# - 如何减少实时 LiveCharts 图的延迟?
- keras - Error when checking target: expected dense to have shape (1,) but got array with shape (15662,) maxpooling as a first layer
- r - 无法运行 rpart 程序
- java - FacebookSdk 尝试在空对象引用上调用虚拟方法 'android.view.View android.view.View.findViewById(int)'
- android - firebase 如何自动发送推送通知
- c - 在c错误中动态分配二维数组
- python - 编译后的 python 可执行访问被阻止访问 Oracle 数据库