Css HtmlUnit的两部分可以';不能共存

Css HtmlUnit的两部分可以';不能共存,css,dom,groovy,htmlunit,Css,Dom,Groovy,Htmlunit,我正在Groovy脚本中使用HtmlUnit解析网页。我还希望能够检索每个元素的最终样式。这是一个测试脚本,它遍历整个页面并转储元素和属性,当然还有样式 经过一些挖掘,我发现,这使我发现基本的htmlunit抓取调用不包括他提到的类:com.gargoylesoftware.htmlunit.javascript.host.ComputedCSSSStyleDeclaration 但我确实在上找到了有关computedcsstyledeclaration的信息 我使用了页面顶部的常春藤信息来构造

我正在Groovy脚本中使用HtmlUnit解析网页。我还希望能够检索每个元素的最终样式。这是一个测试脚本,它遍历整个页面并转储元素和属性,当然还有样式

经过一些挖掘,我发现,这使我发现基本的htmlunit抓取调用不包括他提到的类:
com.gargoylesoftware.htmlunit.javascript.host.ComputedCSSSStyleDeclaration

但我确实在上找到了有关
computedcsstyledeclaration
的信息

我使用了页面顶部的常春藤信息来构造我需要的抓取语句。然而,这两个条目似乎相互冲突。这是我的密码:

@Grab('org.jvnet.hudson:htmlunit:2.2-hudson-9')
@Grab('net.sourceforge.htmlunit:htmlunit:2.10')

import com.gargoylesoftware.htmlunit.*
import com.gargoylesoftware.htmlunit.javascript.host.*

RefreshHandler rh = new RefreshHandler() {
    void handleRefresh( final Page page, final URL url, final int seconds ) {}
}

client = new WebClient(BrowserVersion.FIREFOX_10)
client.setRefreshHandler(rh)

client.javaScriptEnabled = false
client.appletEnabled = false
client.cssEnabled = true
page = client.getPage('http://www.google.com/')
parseChildren(page.documentElement)

def parseChildren(node) {
    println "open ${node.nodeName}"
    node.attributes.each { attr ->
        println "   ${attr.key}/${attr.value.name} = ${attr.value.value}"
    }
    //ComputedCSSStyleDeclaration style = ((HTMLElement)node.getScriptObject()).jsxGet_currentStyle()
    //println "       style: ${style.dump()}"
    node.childElements.each { child ->
        parseChildren(child)
    }
    println "close ${node.nodeName}"
}
如果我按照上面所示的顺序运行Grab语句,脚本运行得很好,但是没有样式信息。但是,如果我尝试取消注释与CSS样式相关的两行,则会出现以下错误:

捕获:java.lang.VerifyError:class com.gargoylesoftware.htmlunit.javascript.host.HTMLElement覆盖最终方法jsxGet_标记名。()Ljava/lang/String; java.lang.VerifyError:class com.gargoylesoftware.htmlunit.javascript.host.HTMLElement覆盖最终方法jsxGet_标记名。()Ljava/lang/String

另一方面,如果我颠倒两个GRAP语句的顺序,则会出现以下异常:

捕获:groovy.lang.MissingPropertyException:没有这样的属性:FIREFOX\u 10 for class:com.gargoylesoftware.htmlunit.BrowserVersion groovy.lang.MissingPropertyException:没有这样的属性:FIREFOX_10用于类:com.gargoylesoftware.htmlunit.BrowserVersion 运行(testHtmlUnit.groovy:13)

很明显这两者之间有某种互动。hudson jar似乎包含了一个完整但古老的HtmlUnit实现,它在最后一个版本时覆盖了当前的2.10版本。但当它首先出现时,如上所示,HtmleElement似乎与JavaScript实现代码中的某些内容相冲突

底线是,我想添加从HtmlUnit检索CSS样式的功能。如果这是正确的方法,我需要使这些罐子配合得很好。如果这是获取这些样式的错误方法,我将感谢您对如何实现这些样式的帮助。不管怎样,谢谢