带有 text() 的 XPath 获取特定的文本节点
XPath with text() to get specific text node
<td style="width: 40.42%;" id="ember193" class="lt-cell align-left ember-view">
<div class="inline-block ember-tooltip-target">
<i class="fa fa-fw fa-lg valid"></i>
<div id="ember195" class="ember-tooltip-base ember-view">
<div><!----></div>
</div>
</div>
<a href="#" data-ember-action="" data-ember-action-196="196">UNIVERSITY OF VERMONT AND STATE AGRICULTURAL COLLEGE</a>
(03-0179440)<!----><br>
<div class="fa fa-fw fa-lg"></div>
(UNIVERSITY OF VERMONT)
</td>
在浏览器控制台中,我执行这个:
$x("//tbody/tr[2]/td[2]/text()[7]")
我得到了我正在寻找的实际文本节点(在 td2 中的其他文本节点中)- 有没有办法在 Text<_> 属性 属性中指定它只得到这个文本节点?
目前没有通过索引获取子文本节点值的属性,只有first或last。无论如何,我会尽量不依赖子节点索引,因为它可能会有所不同。我会尝试从给定的文本中提取数字部分。
您可以借助 2 个属性来完成此操作:
[FindByXPath("td")] // TODO: Change it to your <td> locator.
[GetsContentFromSource(ContentSource.ChildTextNodesTrimmed)]
private Text<_> OrganizationNameInfo { get; set; }
public DataProvider<string, _> OrganizationNumber => GetOrCreateDataProvider(
"Organization Number",
() =>
{
string organizationNameInfo = OrganizationNameInfo.Value;
return organizationNameInfo.Substring(1, organizationNameInfo.IndexOf(')') - 1);
});
OrganizationNameInfo
属性 因为 ContentSource.ChildTextNodesTrimmed
returns "(03-0179440)(UNIVERSITY OF VERMONT)"
值。因此,在 OrganizationNumber
属性 中,您可以轻松地将所需的部分提取为子字符串。
另一种选择是使用正则表达式来提取数字部分。
<td style="width: 40.42%;" id="ember193" class="lt-cell align-left ember-view">
<div class="inline-block ember-tooltip-target">
<i class="fa fa-fw fa-lg valid"></i>
<div id="ember195" class="ember-tooltip-base ember-view">
<div><!----></div>
</div>
</div>
<a href="#" data-ember-action="" data-ember-action-196="196">UNIVERSITY OF VERMONT AND STATE AGRICULTURAL COLLEGE</a>
(03-0179440)<!----><br>
<div class="fa fa-fw fa-lg"></div>
(UNIVERSITY OF VERMONT)
</td>
在浏览器控制台中,我执行这个:
$x("//tbody/tr[2]/td[2]/text()[7]")
我得到了我正在寻找的实际文本节点(在 td2 中的其他文本节点中)- 有没有办法在 Text<_> 属性 属性中指定它只得到这个文本节点?
目前没有通过索引获取子文本节点值的属性,只有first或last。无论如何,我会尽量不依赖子节点索引,因为它可能会有所不同。我会尝试从给定的文本中提取数字部分。
您可以借助 2 个属性来完成此操作:
[FindByXPath("td")] // TODO: Change it to your <td> locator.
[GetsContentFromSource(ContentSource.ChildTextNodesTrimmed)]
private Text<_> OrganizationNameInfo { get; set; }
public DataProvider<string, _> OrganizationNumber => GetOrCreateDataProvider(
"Organization Number",
() =>
{
string organizationNameInfo = OrganizationNameInfo.Value;
return organizationNameInfo.Substring(1, organizationNameInfo.IndexOf(')') - 1);
});
OrganizationNameInfo
属性 因为 ContentSource.ChildTextNodesTrimmed
returns "(03-0179440)(UNIVERSITY OF VERMONT)"
值。因此,在 OrganizationNumber
属性 中,您可以轻松地将所需的部分提取为子字符串。
另一种选择是使用正则表达式来提取数字部分。