在这个价格动态变化的表格中,我希望始终在XPath 1.0中选择属于$ 400,00以上第一个价格的链接。正确的解决方案可能并不总是在第二行,因此tr[2]/td[1]
并不总是正确的结果。
<table>
<tr>
<td><a href="/somesite/page.htm?id=1">1</a></td>
<td>-$200,00</td>
</tr>
<tr>
<td><a href="/somesite/page.htm?id=2">2</a></td>
<td>$500,00</td>
</tr>
<tr>
<td><a href="/somesite/page.htm?id=3">3</a></td>
<td>$100,00</td>
</tr>
</table>
到目前为止最接近的我(非工作)XPath是:
//tr/td[2][starts-with(.,'$')]/(number(substring-after(.,'$')))>400.00/preceding-sibling::td
td[2]
$
个符号
问题在于:
任何帮助都会非常感激(我只是一个简单的测试人员被拖入了测试自动化的神奇世界):))
答案 0 :(得分:1)
我希望始终在XPath 1.0中选择属于$ 400,00以上第一个价格的链接。
那将是
//td[number(translate(normalize-space(), ',$', '.')) > 400]/..//a
请注意,我将,
翻译为.
并将$
翻译为 ** ,因此,如果您的号码格式更进一步(数字分组,例如)这可能还不是100%正确。了解您的数据,进行适当的更改。
为了它的乐趣(并展示XPath的灵活性),这里有一个不同的路径,结果相同:
//a[../..//td[number(translate(normalize-space(), ',$', '.')) > 400]]
** translate()
将一个字符列表替换为另一个字符:
translate('abc', 'ac', 'AC')
返回'AbC'
translate('abc', 'ac', 'A')
返回'Ab'
。