我正在尝试获取页面头部的内容。我使用选择器返回正确的树节点,我可以遍历它并获取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 我已经成功解决了问题和访问元素,但一般来说,问题“为什么我无法访问元素,因为我可以访问元素身体“仍然存在。
答案 0 :(得分:3)
您可能需要发布您尝试与之互动的<head>
元素的HTML,但我相信您可以这样做:
对于HTML:
<head>
<title>This is the title!</title>
</head>
然后您可以使用:
$("head title").@innerHTML
获取标题标签的文本。
编辑:
至于为什么.text()
无法正常工作,这是因为Geb正在调用Selenium的WebElement.getText()
方法,该方法来自API个州:
获取此元素的可见(即未被CSS隐藏)innerText,包括子元素,没有任何前导或尾随空格。
由于<head>
元素是元数据的容器,因此不会显示其内容。