当其中一个标签是可选的时,如何通过xpath选择两个不同级别的标签
我遇到的情况是,数据是同一页面上这些格式的混合。换句话说,某些行将显示为:当其中一个标签是可选的时,如何通过xpath选择两个不同级别的标签,xpath,confluence,Xpath,Confluence,我遇到的情况是,数据是同一页面上这些格式的混合。换句话说,某些行将显示为: some lengthy XPATH_X uptill here: <td/> <td> I Need this element td </td> <td/> <td/> <td/> <td/> 我在页面上尝试了这个,但由于某些原因,它没有选择任何内容 有人能帮我解决这个问题吗?我已经花了两个多小时在这上面了。您应该尝试XPATH
some lengthy XPATH_X uptill here:
<td/>
<td>
I Need this element td
</td>
<td/>
<td/>
<td/>
<td/>
我在页面上尝试了这个,但由于某些原因,它没有选择任何内容
有人能帮我解决这个问题吗?我已经花了两个多小时在这上面了。您应该尝试
XPATH\u X/td[2]//text()
来检索文本,无论它是在td
的根目录下还是在子标记中
你可以测试它;在本测试中,我检索到三个结果:
span
中的文本
- 位于
td
根目录下的文本和所附td
内部的文本(如果这对您不起作用,并且只有在没有span
的情况下才能检索span
的文本,请使用td
)XPATH\ux/td[position()=2而不是(./span)]/text();XPATH\ux/td[2]/span/text()
XPATH_X/td[2]//self::node()[text()]
@亚伦非常喜欢非常感谢。不客气!我已经添加了一个答案,请确保第三个测试用例适合您。不幸的是,这个解决方案在最终代码中不起作用。问题是我使用的是element.find_element_by_xpath(您的解决方案),这失败了,因为我们返回了一些文本。我实际上需要选择元素而不是它们的文本:(我已经用这些信息更新了我的问题。您是否可以修改您的答案,以便我们选择元素而不是文本?@Mugen您可以试试
/root/td[2]//self::node()[text()]
?它应该返回td
下包含文本的每个节点(td
)。如果你确认答案有效,我会更新答案。我再次非常高兴!呜呜!很好:)很高兴我能帮上忙!
XPATH_X/*[self::td[position()=2] or self::td[position()=2]/span]
XPATH_X/td[2]//self::node()[text()]