【问题标题】:How to print text from child node using xpath?如何使用 xpath 从子节点打印文本?
【发布时间】:2015-12-30 17:50:55
【问题描述】:

xpath:

//*[@id='full-scorecard']/div[2]/div/table[1]/tbody/tr[3]/td[2]/child::text()

上面的代码只返回一个不能打印文本的webelement。

WebElement txt= driver.findElement(By.xpath(
   "//*[@id='full-scorecard']/div[2]/div/table[1]/tbody/tr[3]/td[2]/child::text()"));

System.out.println(txt);

HTML:

12.6 抓住休斯 73/4

【问题讨论】:

  • 在 selenium 中,By.xpath() 定位器中使用的 XPath 表达式必须指向一个 Web 元素。您不能以这种方式匹配文本节点。
  • 那么如何获取文本'抓住休斯'??
  • 12.6 抓到休斯 73/4
  • 也许你应该在 WebElement 上尝试getText(),就像here 中建议的那样
  • @alecxe,谢谢,这有帮助。目前尚不清楚“网络元素”是否总是指 DOM 元素,而不是其他类型的 DOM 节点。我在release.seleniumhq.org/selenium-remote-control/0.9.2/doc/dotnet/… 看到 Selenium XPath 支持选择属性(例如//a[contains(@href,'#id1')]/@class),因此显然“web 元素”并不总是 DOM 元素。不幸的是,Selenium 的文档不是非常系统或全面。

标签: java selenium xpath selenium-webdriver


【解决方案1】:

这应该可行:

WebElement txt= driver.findElement(By.xpath("//*[@id='full-scorecard']/div[2]/div/table[1]/tbody/tr[3]/td[2]"));

System.out.println(txt.getText());

【讨论】:

  • 这给了我整个文本 12.6 捕获 Hughes 73/4 但我试图让文本单独捕获 Hughes。
  • 欢迎来到 Stack Overflow!尽管此答案可能是正确且有用的,但如果您 include some explanation along with it 解释它如何帮助解决问题,则最好。如果有更改(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。
【解决方案2】:

Selenium webdriver 返回元素对象下的所有测试,包括子元素。

所以在阅读后你应该从文本中删除整数值。

谢谢 萨迪克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多