在html页面中,我有以下问题:
<button class="....." data-toggle="dropdown">
Text: Title of the button
<span class="....."/>
</button>
我想检测这个按钮通过可见文本文本:按钮的标题,问题是我试图使用以下Xpath检测它
.//*[contains(text(),"Text: Title of the button")]
但它确实有效。 我怎么能检测到这个按钮?
仅供参考:我无法使用class
检测到它,因为此类有多个匹配节点。
答案 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)