4

我正在使用 HtmlUnitDriver,这是我的代码。

   HtmlUnitDriver driver = new HtmlUnitDriver(true);
   driver.get("some url here");

我收到以下异常:

Caused by: com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: SyntaxError: missing ; before statement (http://sales.liveperson.net/hcp/html/mTag.js?site=7824460#1(eval)#1)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:595)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:545)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:520)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:896)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:162)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:221)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:735)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$2.run(HtmlElement.java:866)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:871)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1162)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:202)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:440)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:311)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:346)
    ... 8 more

请帮我解决这个问题。

4

3 回答 3

6

很多问题都提到了这类问题。由于ScriptException您的 javascript 中有语法错误,因此引发了该错误。即使出现某种错误,大多数浏览器也会设法解释 JS,但 HtmlUnit 在这个意义上有点不灵活。

您的选择是:

  1. 正确的JS代码
  2. 禁用 JS 中的WebClient
  3. 不要使用 HtmlUnit。使用具有更好 JS 支持的不同框架,例如PhantomJS(注意它不是基于 Java 的框架)
于 2012-10-05T01:55:09.590 回答
5
_webClient.getOptions().setThrowExceptionOnScriptError(false);

在这个不正确的 JS 场景中工作。

于 2014-02-06T10:52:27.397 回答
4

我对 liveperson mTag.js 有同样的错误

问题在于压缩的 mTag.js 响应。

有几种解决方法:

  1. 用一个清晰​​的替换压缩的 mTag.js(需要 LivePerson 支持)
  2. 使用“真正的”Selenium WebDriver(Firefox 驱动程序或类似驱动程序)
于 2012-10-11T23:03:52.377 回答