用webdriver获取元素文本

时间:2012-09-08 00:14:24

标签: webdriver

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

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

尝试使用XPath表达式

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

直接位于该div下的所有文本节点,

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

表示该div下的第k个文本节点。

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