同时包含ID和文本内容的Xpath表达式

3

所以我有以下标签,我想使用XPath查找:

 <h1 id="label">This is the text</h1>

通常情况下,我会这样写:
//h1[@id='Label' and text() = "This is the text"]

或者,如果我想提取文本的一部分,我可以使用以下方法:
//h1[text()[contains(.,'text')]]

现在,我尝试寻找教程,了解是否可以混合使用两种语句:因此,我想要一个包含@id和包含文本“Text”的Xpath表达式。这样的事情是否可能?我尝试过以下操作:
//h1[@id='Label' and [contains(@text,"text"])] 

但这并没有给我一个正确的结果。

1
我经常使用“包含”,但还有更多。以下是一些例子:多个条件://h1[@id='Label' and contains(text(), 'text')] 部分匹配://span[contains(text(), 'Assign Rate')] 以...开始://input[starts-with(@id,'reportcombo'); 值带有空格://div[./div/div[normalize-space(.)='More Actions...']] 兄弟节点://td[.='LoadType']/following-sibling::td[1]/select" 更复杂的://td[contains(normalize-space(@class), 'actualcell sajcell-row-lines saj-special x-grid-row-collapsed')] - anshul Gupta
@Andersson 如果您根据上述粒度级别复制了“hammer”问题,则每个问题都是某个至少带有selenium标签的现有问题的副本。我们可以重新打开这个问题吗? - undetected Selenium
@DebanjanB,这个问题对社区没有益处:如果不是重复的话,应该将其关闭为“简单的排版错误”:请注意,OP 错误地使用了右括号/方括号。如果那个笔误被修正了,那么... OP 只需要检查 如何使用多个谓词 就可以了。 - Andersson
@Andersson 暂且把“多谓词”理论这个高级主题放在一旁。OP 是一个新用户。我们应该努力为新用户提供有效的体验。正如你所指出的那样,“简单排版错误”是新手期望获得帮助的地方。也许 dup hammer 在这里有些过于严厉了。 - undetected Selenium
@DebanjanB,实际上,第一次帮助是OP得到的语法错误回溯,而Andrei Suvorkov已经提供了正确的答案。好的,如果你有什么要补充的-重新打开。 - Andersson
1个回答

6

替换:

//h1[@id='Label' and [contains(@text,"text"])] 

使用:

//h1[@id='label' and contains(text(),'text')] 

1
请注意,OP的XPath语法不正确,您只是复制了其中一个错误:请将“@text”替换为“text()”。 - Andersson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接