【问题标题】:Get text value from div using selenium web driver in java在java中使用selenium web驱动从div获取文本值
【发布时间】:2016-06-16 15:41:31
【问题描述】:

我有这个 html:

<div class="b-datalist__item__subj">
hello
<span class="b-datalist__item__subj__snippet">hello world</span>
</div>

我只想得到 "hello" 文本,而不是 "hello world"。我写了这段代码:

subject = this.driver.findElement(By.xpath("//div[@class = 'b-datalist__item__subj']")).getText();

但在控制台输出中我看到 "hellohello world"。我该如何解决?

【问题讨论】:

  • 内。您需要查看 DIV 的第一个子节点以获取该特定文本节点。
  • @ChrisSteele 你能修复我的 xpath 吗?
  • 我认为像//div[@class = 'b-datalist__item__subj']/text() 这样的东西会找到文本节点。
  • @ChrisSteele 它对我有用。谢谢!

标签: java selenium selenium-webdriver


【解决方案1】:

您必须从div 中的完整文本中“减去”span 中的文本。比如:

String outsideText = driver.findElement(By.xpath("//div")).getText();
String insideText = driver.findElement(By.xpath("//span")).getText();
String yourText = outsideText.replace(insideText, "");

根据您的情况调整 XPath。

【讨论】:

  • 嗯,这是一个非常好的主意,但我可以用 1 个 xpath 表达式让它更简单吗?
  • XPath 不支持您的要求。
  • 没问题。如果有人引用我的话,我应该修改我上面的评论。 :p XPath 确实有几个 substring* 方法,最适合您的情况可能是 zvon.org/comp/r/ref-XPath_2.html#Functions~substring-before 。但是,这些在 Selenium 中不可用; By.xpath() 仅实现返回整个 XML 节点的方法。
  • 可以使用 findElement(By.cssSelector("div") 。
【解决方案2】:

将以下内容用作 xpath:

//div[text()='hello']

【讨论】:

  • 我可以在这个标签中有差异值,不仅仅是你好
猜你喜欢
相关资源
最近更新 更多
热门标签