You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写符合多条件的XPATH以定位并点击复选框

定位满足多条件的表格行复选框

需求说明

需要定位并点击满足以下三个条件的表格行对应的复选框:

  • 请求者姓名为Linda Jane Anderson的DIV
  • 休假类型为CAN - Personal的DIV
  • 休假状态包含Pending Approval的DIV

提供的HTML源码

<div class="oxd-table-card" data-v-f2168256="" style="">
  <div class="oxd-table-row oxd-table-row--with-border" role="row" data-v-0d5ef602="" data-v-f2168256="" style="">
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="">
      <div class="oxd-table-card-cell-checkbox">
        <div class="oxd-checkbox-wrapper" data-v-6179b72a="" style="">
          <label class="" data-v-6179b72a="">
            <!---->
            <input type="checkbox" value="0" data-v-6179b72a=""/>
            <span class="oxd-checkbox-input oxd-checkbox-input--active --label-right oxd-checkbox-input" data-v-6179b72a="">
              <i class="oxd-icon bi-check oxd-checkbox-input-icon" data-v-bddebfba="" data-v-6179b72a=""/>
            </span>
          </label>
        </div>
      </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">25-07-2022 (09:00 - 13:00) Half Day </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">Anthony Nolan </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">CAN - Personal </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">12.50 </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">0.50 </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 0%;">
      <div data-v-6c07a142="">Pending Approval (0.50) </div>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 5%;">
      <div data-v-6c07a142=""/>
    </div>
    <div class="oxd-table-cell oxd-padding-cell" role="cell" style="flex: 1 1 20%;">
      <div class="oxd-table-cell-actions" data-v-c423d1fa="">
        <button type="button" class="oxd-button oxd-button--medium oxd-button--label-success oxd-table-cell-action-space" data-v-10d463b7="" data-v-c423d1fa="">
          <!----> Approve <!----> </button>
        <button type="button" class="oxd-button oxd-button--medium oxd-button--label-danger oxd-table-cell-action-space" data-v-10d463b7="" data-v-c423d1fa="">
          <!----> Reject <!----> </button>
        <li class="oxd-table-dropdown oxd-table-cell-action-space" disabled="false" data-v-429cfcf3="" data-v-1d22ad12="" data-v-c423d1fa="" style="margin-left: auto;">
          <button class="oxd-icon-button" type="button" data-v-f5c763eb="" data-v-1d22ad12="">
            <i class="oxd-icon bi-three-dots-vertical" data-v-bddebfba="" data-v-f5c763eb=""> </i>
          </button>
          <!---->
        </li>
      </div>
    </div>
  </div>
</div>

尝试的无效XPath

//div[contains(text(), "Linda Jane Anderson")]
/following::div[contains(text(), "CAN - Personal")]
/following::div[contains(text(),"Pending")]
/../preceding-sibling::div//input[@type="checkbox"]

解决方案

正确的XPath写法

写法一:基于父行的多条件匹配

//div[@role='row' and .//div[contains(text(), 'Linda Jane Anderson')] and .//div[contains(text(), 'CAN - Personal')] and .//div[contains(text(), 'Pending Approval')]]//input[@type='checkbox']

写法二:分步筛选行(逻辑更清晰)

//div[@role='row']
[.//div[contains(text(), 'Linda Jane Anderson')]]
[.//div[contains(text(), 'CAN - Personal')]]
[.//div[contains(text(), 'Pending Approval')]]
//input[@type='checkbox']

思路说明

之前的XPath错误在于使用following::div会跨多个行匹配元素,无法确保三个条件都属于同一行。正确的思路是:

  1. 先定位同时满足三个条件的表格行(即div[@role='row']元素)
  2. 再在该行内查找目标复选框元素
    这样就能保证所有筛选条件都属于同一数据行,不会匹配到其他行的元素。

内容的提问来源于stack exchange,提问作者Farhan Soomro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:15:16