使用正则表达式或 xpath 从包含特定文本的 html 中提取 <td> 值

Extract <td> value using regexp or xpath from an html which contains a certain text

我正在使用 JMeter,我想从包含特定值的行的响应中提取列的值:

具体来说,我想获取包含 677777 的行,并为该行获取列 dv-col dv-col-type-enum dv-col-task-state 在这种特定情况下是 Open.

尝试了几个正则表达式但还没有成功,所以欢迎任何帮助或线索。

<!DOCTYPE html>
<html lang="en">
    <head></head>
    <body class="bootstrap env-dlt">
        <div id="main-container" class="container-fluid">
            <div id="main-header" class="header"></div>
            <div class="section">
                <div class="dv-filters large-content"></div>
                <div class="dv-container large-content">
                    <table class="table table-striped table-bordered table-condensed">
                        <thead></thead>
                        <tbody class="taskList">
                            <tr>..</tr>
                            <tr>..</tr>
                            <tr>..</tr>
                            <tr>
                                <td class="dv-col dv-col-type-string dv-col-task-panel"></td>
                                <td class="dv-col dv-col-type-string dv-col-task-phase"></td>
                                <td class="dv-col dv-col-type-long dv-col-task-proposal_reference">
                                    <a href="/presentation/workflow/tasks/111111/detail.html">
                                        677777
                                    </a>
                                </td>
                                <td class="dv-col dv-col-type-long dv-col-task-proposal_acronym"></td>
                                <td class="dv-col dv-col-type-enum dv-col-task-state">
                                    Open
                                </td>
                                <td class="dv-col dv-col-type-long dv-col-task-owner"></td>
                                <td class="dv-col dv-col-type-date dv-col-task-deadline"></td>
                                <td class="dv-col dv-col-type-double dv-col-task-score"></td>
                                <td class="dv-col dv-col-type-action"></td>
                            </tr>
                            <tr>..</tr>
                            <tr>..</tr>
                            <tr>..</tr>

Xpath 可能是替代方案?

谢谢

获取期望结果的 xpath 是:

//tr[td/a[contains(text(),"677777")]]/td[@class="dv-col dv-col-type-enum dv-col-task-state"]/text()

首先找到包含<td><tr>其中有一个<a>的text()包含,或者等于677777,然后找到<td>标签class 是目标 <tr>

下的 "dv-col dv-col-type-enum dv-col-task-state"

I want to get the row which contains 677777

使用 XPath(选择整个行节点):

//tr[*=677777]

获取列数据测试@class属性的内容:

//tr[*=677777]/td[@class[contains(.,"dv-col-task-state") and contains(.,"dv-col-type-enum") ]]

(假设您没有或不关心包含那些 class 名称的匹配 classes。例如:dv-col-task-state-something。如果这是一个问题,您需要连接并匹配 class 属性中的 white-space 以确保它们代表个人 class 名称)