【发布时间】:2015-02-09 03:06:56
【问题描述】:
我有以下 xpath:
By.xpath(".//div[contains(@class, 'foo123') and contains(text(), 'foo bar')]")
我正在尝试查找以下 html:
<div class="foo123">foo bar</div>
我的语法不正确吗?
【问题讨论】:
-
是的,语法是正确的。如果您没有得到预期的结果,请说明您得到的结果。
-
您的意思是在开头使用
.吗?这会将搜索范围限定为当前的“父级”,即通常是您拥有的当前元素,而不是整个文档。 -
基本上我试图唯一地选择一个元素。如果我省略包含文本部分,而是执行以下操作: driver.findElements(By.xpath(".//div[contains(@class, 'foo123')]").size() 它将返回
元素(在本例中为 1)。当我编写相同但使用 and contains text() 时,它将返回 0。 -
是的。是有意的。我基本上是在做一个 parent.child.child
-
@Matt,
.//绝对不是“基本上做一个 parent.child.child”。它正在选择当前上下文节点 (.) 本身及其后代。
标签: java xpath selenium-webdriver appium