当 JSON 在 HTML 中时,JMeter JSON 路径提取器

JMeter JSON Path Extractor when a JSON is inside a HTML

我想从我收到的 json 中提取所有 "tcversion_id" 值,但棘手的部分是 json 在 javascript 中html 响应中的标记。这是响应的 json 部分:

<script type="text/javascript">
treeCfg.root_name='Test Project / First Plan (4)(<span  

class=\"light_not_run\"   title=\"Not Run\">0,
<\/span><span  class=\"light_passed\"   title=\"Passed\">4,
<\/span><span  class=\"light_failed\"   title=\"Failed\">0,
<\/span><span  class=\"light_blocked\"   title=\"Blocked\">0<\/span>)';
    treeCfg.root_id=6;
    treeCfg.root_href='javascript:SP(6,
0)';
    treeCfg.children=
[
:   {
:   :   "spec_order":"1",
:   :   "node_order":"1",
:   :   "id":"8",
:   :   "parent_id":"6",
:   :   "name":"First Suite",
:   :   "node_type_id":"2",
:   :   "tcversion_id":"0",
:   :   "node_type":"testsuite",
:   :   "node_table":"testsuites",
:   :   "children":
:   :   [
:   :   :   {
:   :   :   :   "spec_order":"100",
:   :   :   :   "node_order":"1",
:   :   :   :   "id":"9",
:   :   :   :   "parent_id":"8",
:   :   :   :   "name":"First Case",
:   :   :   :   "node_type_id":"3",
:   :   :   :   "tcversion_id":"10",
:   :   :   :   "node_type":"testcase",
:   :   :   :   "node_table":"testcases",
:   :   :   :   "leaf":true,
:   :   :   :   "external_id":"1",
:   :   :   :   "version":"1",
:   :   :   :   "testlink_node_name":"First Case",
:   :   :   :   "testlink_node_type":"testcase",
:   :   :   :   "text":"<span class=\"light_passed\"   title=\"Passed\" alt=\"Passed\"><b>JM2-1<\/b>:First Case<\/span>",
:   :   :   :   "position":"1",
:   :   :   :   "href":"javascript:ST(9,10)"
:   :   :   },
:   :   :   {
:   :   :   :   "spec_order":"101",
:   :   :   :   "node_order":"1",
:   :   :   :   "id":"11",
:   :   :   :   "parent_id":"8",
:   :   :   :   "name":"Second Case",
:   :   :   :   "node_type_id":"3",
:   :   :   :   "tcversion_id":"12",
:   :   :   :   "node_type":"testcase",
:   :   :   :   "node_table":"testcases",
:   :   :   :   "leaf":true,
:   :   :   :   "external_id":"2",
:   :   :   :   "version":"1",
:   :   :   :   "testlink_node_name":"Second Case",
:   :   :   :   "testlink_node_type":"testcase",
:   :   :   :   "text":"<span class=\"light_passed\"   title=\"Passed\" alt=\"Passed\"><b>JM2-2<\/b>:Second Case<\/span>",
:   :   :   :   "position":"1",
:   :   :   :   "href":"javascript:ST(11,12)"
:   :   :   },
:   :   :   {
:   :   :   :   "spec_order":"102",
:   :   :   :   "node_order":"1",
:   :   :   :   "id":"17",
:   :   :   :   "parent_id":"8",
:   :   :   :   "name":"Third Case",
:   :   :   :   "node_type_id":"3",
:   :   :   :   "tcversion_id":"18",
:   :   :   :   "node_type":"testcase",
:   :   :   :   "node_table":"testcases",
:   :   :   :   "leaf":true,
:   :   :   :   "external_id":"3",
:   :   :   :   "version":"1",
:   :   :   :   "testlink_node_name":"Third Case",
:   :   :   :   "testlink_node_type":"testcase",
:   :   :   :   "text":"<span class=\"light_passed\"   title=\"Passed\" alt=\"Passed\"><b>JM2-3<\/b>:Third Case<\/span>",
:   :   :   :   "position":"1",
:   :   :   :   "href":"javascript:ST(17,18)"
:   :   :   },
:   :   :   {
:   :   :   :   "spec_order":"103",
:   :   :   :   "node_order":"1",
:   :   :   :   "id":"21",
:   :   :   :   "parent_id":"8",
:   :   :   :   "name":"Fourth",
:   :   :   :   "node_type_id":"3",
:   :   :   :   "tcversion_id":"22",
:   :   :   :   "node_type":"testcase",
:   :   :   :   "node_table":"testcases",
:   :   :   :   "leaf":true,
:   :   :   :   "external_id":"4",
:   :   :   :   "version":"1",
:   :   :   :   "testlink_node_name":"Fourth",
:   :   :   :   "testlink_node_type":"testcase",
:   :   :   :   "text":"<span class=\"light_passed\"   title=\"Passed\" alt=\"Passed\"><b>JM2-4<\/b>:Fourth<\/span>",
:   :   :   :   "position":"1",
:   :   :   :   "href":"javascript:ST(21,22)"
:   :   :   }
:   :   ],
:   :   "failed":0,
:   :   "blocked":0,
:   :   "passed":4,
:   :   "not_run":0,
:   :   "not_available":0,
:   :   "unknown":0,
:   :   "all":0,
:   :   "testcase_count":4,
:   :   "testlink_node_name":"First Suite",
:   :   "testlink_node_type":"testsuite",
:   :   "leaf":false,
:   :   "text":"First Suite (4)(<span  class=\"light_not_run\"   title=\"Not Run\">0,<\/span><span  class=\"light_passed\"   title=\"Passed\">4,<\/span><span  class=\"light_failed\"   title=\"Failed\">0,<\/span><span  class=\"light_blocked\"   title=\"Blocked\">0<\/span>)",
:   :   "position":"1",
:   :   "href":""
:   }
]
;
    treeCfg.cookiePrefix='test_exec_build_id_2_';
</script>

我真的可以使用 JSON 路径提取器来获取这些值吗?如果可以,如何获取这些值?

我认为您不能应用 JSONPATHExtractor。将正则表达式提取器与正则表达式一起使用,如下所示:

"tcversion_id""(.*?)",

它产生 5 个值。您可以通过如下方式对它们进行索引来访问特定值:

ID 是在正则表达式提取器中指定的 Reference Name

Reference Name - value 
ID_1 - 0 (first value) 
ID_2 - 10 (second value)
ID_3 - 12 (third value)
... continue till ID_5 (matches are 5)