1

我想得到一个节点的文本,而不是得到它的子文本。例如,如何从以下 HTML 中获取文本“hello”?

<div id="myid">hello <b>world</b></div>
4

2 回答 2

1

我能够完成这项工作的唯一方法是使用反射绕过 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();
于 2012-09-08T23:19:04.240 回答
0

试试 XPath 表达式

//div[@id='myid']/text()

对于该 div 下的所有文本节点,以及

//div[@id='myid']/text()[k]

对于该 div 下的第 k 个文本节点。

我已经使用 libxslt 使用 XSL 测试了这个 XPath,但不在 webdriver 中(但我知道 webdriver 支持 XPath)。

于 2012-09-08T00:30:16.100 回答