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

ControlList中多个PaymentItem的FindByXPath均返回首个元素值问题

问题原因

你代码里FindByXPath使用的XPath表达式开头的//是绝对路径查询语法,含义是从整个HTML文档的根节点出发查找所有匹配的后代节点,不会受到当前PaymentItem对应的父div节点的上下文限制。所以两个PaymentItem实例查询SpecialInstructions时,都会返回全文档第一个匹配的元素,自然都取到第一个节点的"None"值。

修复方案

把所有控件对应的XPath开头的//替换为.//,.代表当前上下文节点(即每个PaymentItem匹配到的div节点),这样查询就会限制在当前PaymentItem的节点范围内执行,属于相对路径查询。

修改后的代码如下:

public ControlList<PaymentItem, _> PaymentGroup { get; private set; }

[ControlDefinition("div[@id='grant-details']//div", ContainingClass = "payment-details", ComponentTypeName = "Payment Item")]
public class PaymentItem : Control<_>
{
     [FindByXPath(".//a[contains(@class, 'test-payment-details-toggle')]")]
     public Link<_> Caret { get; private set; }

     [FindByXPath(".//strong[text() = 'Special Instructions:']/parent::p")]
     public Text<_> SpecialInstructions { get; private set; }
}

内容的提问来源于stack exchange,提问作者Steve Gray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:48:04