text()
в вашем xpath .../p[2]/text()
требует возврата TextNode.Но селен может возвращать только элементный узел.
Например: //*[@id="tab"]/div/div/div[1]/div[1]/div[2]/p[2]/span
ожидать возврата элементного узла с именем TAG span
.
Galen Framework использует Selenium для открытия веб-браузера.и выберите проверенные элементы на странице.
Браузер поддерживает //*[@id="tab"]/div/div/div[1]/div[1]/div[2]/p[2]/text()
, вы можете добиться успеха в DevTool браузера.Но это не эквивалентно поддержке Selenium.
Так что в вашем случае вам нужно сделать селен, чтобы найти и вернуть p
Элемент элемента:
<p class="className"><span id="">parent</span>
child
</p>
Java-пример использования HTML DOM API:
((JavaScriptExecutor) driver).executeScript(
"return arguments[0].childNodes[2].nodeValue;",
driver.findElement(By.xpath(
"//*[@id='tab']/div/div/div[1]/div[1]/div[2]/p[2]"
))
)
// arguments[0] is the p ElementNode
// childNodes[2] is the 3rd child node of the p, it's the TextNode 'child'
// As I mentioned, Selenium's findElement(s) not support to return TextNode
// Even you can directly access the text node via HTML DOM api, but
// you can't return it for further using by Galen.