我无法使用硒中的文本选择以下 h2 元素 -
<h2>
<span id="presentations:0:categoryHeaderForm:j_idt95"><a id="presentations:0:categoryHeaderForm:j_idt95:j_idt97" href="#" class="ui-commandlink ui-widget chekChartLink" aria-label="Technical Information" onclick="PrimeFaces.ab({source:'presentations:0:categoryHeaderForm:j_idt95:j_idt97',process:'presentations:0:categoryHeaderForm:j_idt95:j_idt97',update:'chekChartForm',oncomplete:function(xhr,status,args){chekChartWidget.show();}});return false;" title="Technical Information">
<span class="icon-border icon-large icon-wrench"></span></a>
</span>Water Pump
<div id="presentations:0:categoryHeaderForm:j_idt101" class="ui-datalist ui-widget service-tsbs">
<div id="presentations:0:categoryHeaderForm:j_idt101_content" class="ui-datalist-content ui-widget-content"></div>
</div>
<script id="presentations:0:categoryHeaderForm:j_idt101_s" type="text/javascript">PrimeFaces.cw('DataList','widget_presentations_0_categoryHeaderForm_j_idt101',{id:'presentations:0:categoryHeaderForm:j_idt101'});</script>
</h2>
我试过了:
driver.findElement(By.xpath("//h2[contains(text(), 'Water Pump')]"));
但得到:
org.openqa.selenium.NoSuchElementException: 无法使用 xpath 查找元素
有什么建议吗?
您应该指定子文本节点的索引,该索引应包含所需的子字符串,例如 //h2[contains(text()[2], 'Water Pump')]
或尝试按作为其字符串表示形式一部分的文本选择标题:
//h2[contains(., 'Water Pump')]
您可以在 xpath 中使用通配符*
和following-sibling::
,如下所示:
driver.findElement(By.xpath("//h2[contains(text()[2], 'Water Pump')]/following-sibling::*"));
这是此链接中的一个示例。
希望对您有所帮助!
附言
功劳是@Anderson XPath...在评论中查看