Java HtmlUnit-非法选择器错误

Java HtmlUnit-非法选择器错误,java,htmlunit,Java,Htmlunit,我正在尝试使用HtmlUnit提交表单 使用以下代码 try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) { final HtmlPage page = webClient.getPage("https://nseindia.com/products/content/equities/equities/eq_security.htm"); System.out.println(page.getTit

我正在尝试使用HtmlUnit提交表单

使用以下代码

try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
  final HtmlPage page = webClient.getPage("https://nseindia.com/products/content/equities/equities/eq_security.htm");
  System.out.println(page.getTitleText());
}
但是我得到了这个错误

Aug 23, 2018 10:50:35 PM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '#main_menu > ul > li:last' error: Invalid selector: *#main_menu > ul > li:last).] sourceName=[https://nseindia.com/common/js/jquery-1.4.4.min.js] line=[100] lineSource=[null] lineOffset=[0]
错误出现在
jquery-1.4.4.min.js
中。所以它可能不应该是一个代码问题。另外,当我尝试在Chrome上访问网页时,我没有遇到这个错误

我还添加了以下内容,但仍然得到相同的错误

webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setTimeout(10000);
有人能帮我吗?我使用
htmlunit-2.32
Java1.8

更新:在实际错误出现之前,我还多次收到以下警告

Aug 24, 2018 11:16:55 AM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.`
另外,当我将url更改为
https://stackoverflow.com
,我收到另一个运行时错误

Aug 24, 2018 11:41:53 AM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: *:x).] sourceName=[https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js] line=[2] lineSource=[null] lineOffset=[0]

但是代码仍然向前移动并打印页面的标题。在我的例子中,程序不会终止,但也不会向前移动。

在重新加载页面并使用chrome javascript控制台快速执行给定的无效选择器后,我能够在chrome中获得您的错误。 这让我相信seletcor所指向的元素是由javascript创建的(如果在页面的所有文件中搜索选择器,就会确认这一点),这就是代码给出错误的原因。 尝试添加

webClient.waitForBackgroundJavaScript(3000);
就在调用getPage之后。这应该让代码等待3秒钟,这应该足够让js创建所请求的元素


更好的方法是听一些事件,如
onload
,但我不确定如何从客户端而不是从页面本身完成这项工作…

尝试将这一行添加到代码中:

webClient.getOptions().setThrowExceptionOnScriptError(false);

它将防止
HtmlUnit
在任何JavaScript失败时抛出异常。

对我来说不起作用。我甚至把时间改为10秒(10000ms)甚至20秒。如果此警告有助于2018年8月24日上午11:16:55 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify警告:遇到过时的内容类型:“application/x-javascript”。