Geb。访问头元素内容 (script/stylesheet/title…)
Geb. Access head element contents (script/stylesheet/title…)
我正在尝试获取页面头部的内容。我使用 returns 正确树节点的选择器,我可以遍历它并得到 tagNames/attributes,但所有文本似乎都是空的。
对于html:
<head>
<script>alert("MSG")</script>
</head>
$("head").children()*.text() // all empty
assert $('head script').text() == "" // assert true, so apparently text() is empty.
assert $("head script").@innerHTML == 'alert("MSG")' // finally works
我可以在 driver.pageSource
中看到文字
我需要指定一些选项来解析头部,还是完全不可能?
编辑:
添加了 html 示例和更多代码解释。显然 @innerHTML works
,据我所知,它通过 WebDriver .getAttribute("innerHTML");
方法。
对我来说有点奇怪,为什么 text() 方法对 head 不起作用。所以,感谢@jk47,我已经设法解决了问题并访问了元素,但是一般来说,问题"why I can't access elements of head same way I can access elements of the body" 仍然存在.
您可能需要 post 您尝试与之交互的 <head>
元素的 HTML,但我相信您可以这样做:
对于HTML:
<head>
<title>This is the title!</title>
</head>
然后您可以使用:
$("head title").@innerHTML
获取标题标签的文本。
编辑:
至于为什么 .text()
不起作用,是因为 Geb 正在调用 Selenium 的 WebElement.getText()
方法,API 指出:
Get the visible (i.e. not hidden by CSS) innerText of this element, including sub-elements, without any leading or trailing whitespace.
由于 <head>
元素是 meta-data 的容器,因此它们的内容永远不会显示。
我正在尝试获取页面头部的内容。我使用 returns 正确树节点的选择器,我可以遍历它并得到 tagNames/attributes,但所有文本似乎都是空的。
对于html:
<head>
<script>alert("MSG")</script>
</head>
$("head").children()*.text() // all empty
assert $('head script').text() == "" // assert true, so apparently text() is empty.
assert $("head script").@innerHTML == 'alert("MSG")' // finally works
我可以在 driver.pageSource
我需要指定一些选项来解析头部,还是完全不可能?
编辑:
添加了 html 示例和更多代码解释。显然 @innerHTML works
,据我所知,它通过 WebDriver .getAttribute("innerHTML");
方法。
对我来说有点奇怪,为什么 text() 方法对 head 不起作用。所以,感谢@jk47,我已经设法解决了问题并访问了元素,但是一般来说,问题"why I can't access elements of head same way I can access elements of the body" 仍然存在.
您可能需要 post 您尝试与之交互的 <head>
元素的 HTML,但我相信您可以这样做:
对于HTML:
<head>
<title>This is the title!</title>
</head>
然后您可以使用:
$("head title").@innerHTML
获取标题标签的文本。
编辑:
至于为什么 .text()
不起作用,是因为 Geb 正在调用 Selenium 的 WebElement.getText()
方法,API 指出:
Get the visible (i.e. not hidden by CSS) innerText of this element, including sub-elements, without any leading or trailing whitespace.
由于 <head>
元素是 meta-data 的容器,因此它们的内容永远不会显示。