因此,我刚刚开始使用 HtmlUnit(字面意思是刚刚开始),但我已经遇到了错误。我有一些简单的代码:
fun getPage() { val page: Page = WebClient().getPage("http://htmlunit.sourceforge.net") }
但是,它会抛出一个非常长的错误:
WARNING: CSS error: 'http://htmlunit.sourceforge.net/css/apache-maven-fluido-1.5.min.css' [9:90176] Error in declaration. '*' is not allowed as first char of a property.
Jan 24, 2018 4:14:58 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: 'http://htmlunit.sourceforge.net/css/apache-maven-fluido-1.5.min.css' [9:91151] Error in declaration. '*' is not allowed as first char of a property.
Jan 24, 2018 4:14:59 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
Jan 24, 2018 4:15:00 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
//continues the above sequence a lot, and then ends with:
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: :x).] sourceName=[http://htmlunit.sourceforge.net/js/apache-maven-fluido-1.5.min.js] line=[25] lineSource=[null] lineOffset=[0]
我查看了 link provided by the error ,它的 CSS 中似乎包含很多星号。准确地说是 194(包括注释区域中使用的星号)。我还尝试加载其他网页,但似乎无法理解网页的 CSS 是否有效。
我是做错了什么,还是应该告诉它忽略 CSS? (我不确定这是否可能,但我更喜欢它。)
最佳答案
首先关于css警告
- 这是一个警告
- 参见 star hack有关这方面的更多信息
- 如果您仍然认为这是有效的 css,请打开 CSSParser 问题,我会看看
第二:指定了无效或非法的选择器....
如果您使用 HtmlUnit 测试页面,这很常见。背景是许多 javascript 库(如 jQuery 使用的 sizzle)进行一些检查以确定您的浏览器支持哪些功能。您看到的输出是其中一项检查的结果。这个试图弄清楚,如果 javascript select 方法能够与一种特殊的 css-selectors 一起工作。在 javascript 代码中有一个围绕此选择器用法的 try-catch,如果选择器失败(实际上这在许多浏览器中都会发生),则该功能不可用并且库会回退到其他方式来进行选择。在错误日志中看到这个的原因是 HtmlUnit 历史的一部分。这个库最初是为 web 测试而设计的,基于这个库在抛出异常时记录每个 javascript 异常(即使稍后捕获/处理异常)。所以你或多或少可以忽略这一点; HtmlUnit 不会因此而停止工作。
关于css - HtmlUnit 无法识别有效的 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433835/