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 的容器,因此它们的内容永远不会显示。