1

请看下面的html片段:

<tr class="clickable">
<td id="7b8ee8f9-b66f-4fba-83c1-4cf2827130b5" class="clickable">
<a class="editLink" href="#">Single</a>
</td>
<td class="clickable">£14.00</td>
</tr>

当 td[1] 包含“Single”时,我试图断言 td[2] 的值。我尝试了以下各种变体:

//td[2][(contains(text(),'£14.00'))]/../td[1][(contains(text(),'Single'))]

我在其他地方成功地使用了类似的符号 - 但在这里无济于事......我认为这取决于 td[1] 具有嵌套元素,但不确定。

有人可以启发我做错了什么吗?:)

干杯!

4

2 回答 2

5

关于什么:

//tr[contains(td[1], "Single")]/td[2]

首先选择<tr>包含<td>匹配文本的,然后选择td[2]

然后,

contains(//tr[contains(td[1], "Single")]/td[2], "£14.00")

应该返回True

或者,更接近您尝试的表达式,您可以测试它是否匹配:

//tr[contains(td[1], "Single")]/td[2][contains(., "£14.00")]

请参阅@JensErat 的答案以在相同的 tr xpath python 中找到带有 td 的 xth td

于 2013-08-07T17:41:35.193 回答
0

为什么不让自己变得简单,在代码中执行 if 语句。伪代码:

  1. 选择顶层 tr。
  2. 在 tr 中找到第一个 td,检查它是否包含 Single。
  3. 如果是,则断言它包含 14.00 英镑

或者,您可以只获取顶级 tr 的文本并对该文本执行检查。

于 2013-08-07T17:02:42.060 回答