【问题标题】:What is the xpath proper syntax for and contains text()?什么是 xpath 正确的语法并包含 text()?
【发布时间】: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


【解决方案1】:

我想通了——我很困惑,因为 webdriver .getText() 和 xpath 的 text() 不做同样的事情。在此示例中,我实际查找的 div 如下所示:

<div class="divSelected">
    <div class="div1" />
    <div class="divwithtext"> text </div>
    <div class="div3"/>
</div>

如果我在 webdriver 中执行 divSelected.getText() 它会给我“文本”。 xpath text() 不会。

【讨论】:

  • 因此,对于您未来的问题,请确保提供足够的信息(例如,代表您的实际问题的 div 结构)。
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多