我想得到一个节点的文本,而不是得到它的子文本。例如,如何从以下 HTML 中获取文本“hello”?
<div id="myid">hello <b>world</b></div>
我想得到一个节点的文本,而不是得到它的子文本。例如,如何从以下 HTML 中获取文本“hello”?
<div id="myid">hello <b>world</b></div>
我能够完成这项工作的唯一方法是使用反射绕过 WebElement 的可见性保护:
WebElement webElement = driver.findElementById("myid");
Method getter = webElement.getClass().getDeclaredMethod("getElement");
getter.setAccessible(true);
HtmlElement htmlElement = (HtmlElement) getter.invoke(webElement);
String name = htmlElement.getFirstChild().getTextContent();
试试 XPath 表达式
//div[@id='myid']/text()
对于该 div 下的所有文本节点,以及
//div[@id='myid']/text()[k]
对于该 div 下的第 k 个文本节点。
我已经使用 libxslt 使用 XSL 测试了这个 XPath,但不在 webdriver 中(但我知道 webdriver 支持 XPath)。