Selenium:通过可见文本查找元素

时间:2016-05-24 08:52:24

标签: html selenium xpath

在html页面中,我有以下问题:

<button class="....." data-toggle="dropdown">
Text: Title of the button                        
<span class="....."/>
</button>

我想检测这个按钮通过可见文本文本:按钮的标题,问题是我试图使用以下Xpath检测它

.//*[contains(text(),"Text: Title of the button")]

但它确实有效。 我怎么能检测到这个按钮?

仅供参考:我无法使用class检测到它,因为此类有多个匹配节点。

2 个答案:

答案 0 :(得分:2)

contains(text(), '...')仅从当前上下文元素评估第一个文本节点子。对于您发布的示例元素,这不应该是任何问题(请参阅demo,但它不适用于以下元素,例如,因为button中的第一个文本节点是位于span之前的新行。 {1}}:

<button class="....." data-toggle="dropdown">
<span class="....."/>
Text: Title of the button                        
</button>

要评估当前上下文元素的所有文本节点子节点,请改用以下格式:

.//*[text()[contains(.,"Text: Title of the button")]]

<强> demo

上面的XPath测试单个文本节点是否包含某些文本。

答案 1 :(得分:1)

嗨,请按以下方式进行操作

By.xpath("//button[contains(text(),'Text: Title of the button')]")
please put Text: Title of the button in single quote.
Also if more html source code is provided then i can come up with a better locator stratgey

您也可以根据班级名称或通过谈话属性来完成 数据肘节=&#34;下拉&#34;在xpath中也是如此// * [@ data-toggle =&#39; dropdown&#39;]

//获取列表中按钮的类名

List<WebElement> buttons= driver.findElements(By.className("className"));
Now you can select your concerned button on the basis of index (in java index starts 
form zero)