希望通过此代码块获得$ 2.00的XPath:
<td class="undefined" colspan="6">
<table class="history-bill-payments" cellspacing="0" cellpadding="0" border="0" align="center" width="99%">
<thead>
<tbody>
<tr>
<td valign="top">04/19/2016</td>
<td valign="top" style="text-align:right; height:">
$3.00
<br/>
$2.00
</td>
我尝试了这些但无济于事
$I->CanSeeElement("//table[contains(tbody/tr[2]/td/table/tbody/tr/td[2]/following-sibling::br)]");
$I->CanSeeElement("//table[contains(tbody/tr[2]/td/table/tbody/tr/td[2]/preceding-sibling::br/text(),'$2.00')]");
$I->CanSeeElement("//table[contains(tbody/tr[2]/td/table/tbody/tr/td[2]/following-sibling::br/text(),'$2.00')]");
在Firefox中使用firepath,我得到了这个XPath
html / body / div [4] / div [2] / div / div / div / div / table / tbody / tr [2] / td / table / tbody / tr / td [2]
我能够得到$ 3.00的xpath
$I->CanSeeElement("//table[contains(tbody/tr[2]/td/table/tbody/tr/td[2]/text(),'$3.00')]");
在XPath 1.0中,给定一个节点集,contains()
它将只求值该集合中的第一个节点。这就是为什么您的初始XPath成功找到包含的文本节点'$3.00'
,而不是找到的文本节点的原因'$2.00'
。
与$ 3.00的xpath的工作方式接近的XPath表达式如下:
//table[tbody/tr[2]/td/table/tbody/tr/td[2]/text()[contains(.,'$2.00')]]
上面的XPath通过应用contains()
在单个文本节点上而不是一次传递多个文本节点来工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句