gpt4 book ai didi

ruby - 如何在 XPath text() 函数中匹配 br 标签

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:57 25 4
gpt4 key购买 nike

我有以下元素。

driver = Selenium::WebDriver.for :phantomjs
driver.xpath("/html/body/form/table/tbody/tr[14]/td/table/tbody/tr/td/table/tbody/tr[1]/td[1]/font").text
=> "unique\ntext"

但我不想依赖不稳定的表格布局,所以我决定使用text() xpath 中的函数如下:

driver.xpath("//font[text()='unique\ntext']")
=> nil

但是如您所见,我无法通过 text() 找到元素功能。原文为unique<br>text .

如何匹配 <br>使用 XPath 标记?

没有idname我可以使用的属性。

最佳答案

text()测试选择任何文本节点。在这个例子中有两个这样的节点,在<br>之前和之后.它与 text 不同方法或父节点的字符串值。

选择您想要的内容的一种方法可能是这样的:

driver.xpath("//font[ . ='unique\ntext']")

您可能需要在文本之前或之后添加额外的换行符。请注意,这依赖于 Ruby 进行 \n 的转换。在将查询传递给 XPath 处理器之前转换成一个实际的换行符,因此您需要小心确保引号正确。这将比较节点的 string-value,对于 element is the concatenation of all the descendent text nodes ,这就是您想要的。

更好的解决方案可能是使用 normalize-space() function在这里(只要文本的独特之处不依赖于换行符)。

尝试:

driver.xpath("//font[normalize-space()='unique text']")

请注意,目标文本中的所有前导和尾随空格都已删除,任何内部空格都更改为单个空格字符。

关于ruby - 如何在 XPath text() 函数中匹配 br 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com