【问题标题】:Geb. Access head element contents (script/stylesheet/title…)盖布。访问头元素内容(脚本/样式表/标题...)
【发布时间】:2015-03-11 18:46:02
【问题描述】:

我正在尝试获取页面 head 部分的内容。我使用返回正确树节点的选择器,我可以遍历它并获取标记名/属性,但所有文本似乎都是空的。

对于 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,我设法解决了问题并访问了元素,但是一般来说,问题“为什么我不能像访问元素一样访问 head 的元素的身体”仍然存在

【问题讨论】:

    标签: testing webdriver geb


    【解决方案1】:

    您可能需要发布您尝试与之交互的 &lt;head&gt; 元素的 HTML,但我相信您可以这样做:

    对于 HTML:

    <head>
      <title>This is the title!</title>
    </head>
    

    然后您可以使用:

    $("head title").@innerHTML
    

    获取标题标签的文本。

    编辑:

    至于为什么 .text() 不起作用,这是因为 Geb 正在调用 Selenium 的 WebElement.getText() 方法,该方法来自 API 状态:

    获取此元素的可见(即未被 CSS 隐藏)innerText,包括子元素,没有任何前导或尾随空格。

    由于&lt;head&gt; 元素是元数据的容器,它们的内容从不显示。

    【讨论】:

    • 感谢您的回答。我已经扩展了问题。基本上 - 是的,您的解决方案有效。可能innerHTML 将返回稍微不同的结果,例如title 方法。 (  处理等等。)
    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2016-04-21
    • 2014-12-20
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多