【问题标题】:check condition to extract value from html response in jmeter检查条件以从 jmeter 中的 html 响应中提取值
【发布时间】:2019-09-18 19:18:37
【问题描述】:

我是 JMeter 的新手,我正在做一个关于 JMeter 的项目。我必须从 HTML 响应中提取值取决于条件。

实际数据:

<li class="size size-item 159103">
<button id="productSizesAndGrid-btn-size-1" class="btn selection-button lowStock" data-skucode="159103" data-size="XS 8/10 " data-in-wishlist="false" data-stock-status-name="Low stock"> XS 8/10 </button>
</li>

我想提取数据代码,但如果 data-stock="In stock"。 data-stock 也可能缺货,因此如果数据 In Stock 则只有我想提取该值。

我了解使用正则表达式提取器进行简单的值提取,但不明白如何执行此操作。

当我使用它时,我意识到存在具有相同属性和类的禁用数据

<li class="size size-item 159108">
<button id="productSizesAndGrid-btn-size-1" class="btn selection-button outOfStock disabled" data-skucode="159108" data-size="XS 8/10 " data-in-wishlist="false" data-stock-status-name="Out of stock"> XS 8/10 </button> 
</li>

编辑:

我尝试使用以下答案:在我的情况下它不起作用

Regular Expression : <button id="btnid" class="btn inStock" data-code="(.*?)"(.*?)data-stock="In stock">
Select the first template $1$

使用css选择器:

#btnid

这在我的情况下有效,现在问题是我有两个元素,因为两个 id 相同,如何获取特定元素;我想要第二个,因为第一个被禁用。

<button id="product-1" class="btn outOfStock disabled" data-code="123456"  wishlist="false" data-stock="Out of stock" style="" css="1"></button>

<button id="product-1" class="btn inStock" data-code="123123" data-size="XS 8/10 " wishlist="false" data-stock="Low stock" style="" css="2"></button>

如果你在 Match No: 2

中添加 2 就可以了

但我不知道这是否正确!

通过上述解决方案,我仍然没有得到库存的实际元素,如果我得到了,那么我的问题就解决了,但我只有临时解决方案;如果有人能告诉我正确的方法,我将不胜感激。

答案:以下为我接受的答案:

Match count: 13
Match[1]=
Match[2]=159109
Match[3]=159110
Match[4]=159111
Match[5]=159112
Match[6]=159103
Match[7]=159104
Match[8]=159105
Match[9]=159106
Match[10]=159107
Match[11]=
Match[12]=
Match[13]=

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    Don't use regular expressions for parsing HTML,它们很难开发和维护,而且它们很脆弱并且对标记更改很敏感。

    我建议使用 CSS Selector Extractor,相关的 CSS 选择器以匹配 &lt;button&gt; 标签,其中 data-stock attributenot Out of stock 类似于:

    button:not([data-stock=Out of stock])
    

    您需要data-code 属性

    演示:

    【讨论】:

    • 快速问题:它正在工作,但我得到了所有的值,而那些缺货的值是空白的,正如你所看到的那样:我也想从这个数组中删除空白值如何做到这一点?
    【解决方案2】:

    要实现这一点,请按照以下步骤操作:

    1. 将正则表达式提取器添加为返回响应的采样器的子项

    1. 正则表达式提取器设置如下:

      Regular Expression : <button id="btnid" class="btn inStock" data-code="(.*?)"(.*?)data-stock="In stock">
      Select the first template $1$
      

    1. 工作证明

    1. 之后,您可以在脚本中的任何位置使用${dataCode}

    【讨论】:

    • 这肯定是有道理的,但在我的情况下仍然不起作用我不知道我做错了什么!
    • 我也尝试过使用 css 选择器 - 选择
    • 我不确定你在做什么。您需要使用正确的 HTTP URL 运行 HTTP Sampler,以提供您感兴趣的响应。然后,您需要使用答案中显示的设置将正则表达式提取器作为该 HTTP 请求采样器的子级。
    • 你能从你的代码中解释一下这个 data-code="(.*?)"(.*?) 吗?可能这部分不工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多