我正在浏览HTML文档中的文字:“必填”。我需要找到的是保存文本的元素。例如:
<p>... Required<p>
我会得到元素名称= p
但是,它可能不在<p>
标记中。它可以是任何类型的标记,这个问题与其他一些搜索文本Stack Overflow问题不同。
现在我正在使用:
page.at(':contains("Required")')
但这只能得到完整的HTML元素
答案 0 :(得分:2)
您遇到的问题是:contains
伪类匹配在其后代中的任何位置搜索文本的任何元素。您需要找到包含此类文本的最内层元素。由于html
是所有元素的祖先,如果页面包含任何位置的文本,那么html
将包含,因此这将是第一个匹配的元素。
我不确定你能用CSS实现这个目的,但你可以像这样使用XPath:
page.at_xpath('//*[text()[contains(., "Required")]]')
这将查找具有text()
节点的第一个元素节点作为包含Required
的子节点。如果您拥有该节点(如果存在),则可以在其上调用name
以提供该元素的名称。
答案 1 :(得分:0)
你应该使用CSS选择器:
page.css('p').text
答案 2 :(得分:0)
对于CSS,您可以这样做:
page.at('[text()*="Required"]')
它不是真正的CSS,甚至是jQuery额外的。