创业板访问头元素内容(脚本/样式表/标题...)

时间:2015-03-11 18:46:02

标签: testing webdriver geb

我正在尝试获取页面头部的内容。我使用选择器返回正确的树节点,我可以遍历它并获取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 我已经成功解决了问题和访问元素,但一般来说,问题“为什么我无法访问元素,因为我可以访问元素身体“仍然存在

1 个答案:

答案 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>元素是元数据的容器,因此不会显示其内容。