【问题标题】:HtmlUnit in Java returning errors when browsers work fine当浏览器正常工作时,Java 中的 HtmlUnit 返回错误
【发布时间】:2011-10-31 04:19:51
【问题描述】:

我正在尝试使用 HTMLUnit 登录网站,但每当我提交登录详细信息时,都会收到大量错误信息。我将我的代码分成小块,以便我可以看到它是在单击提交按钮之后,但在其他任何事情发生之前;这需要一段时间,因为它是一个非常缓慢的网站。因为它发生在登录后,所以很遗憾,我无法向您展示它的含义。我可以说成功登录有一些重定向,因为它给了我一个找不到页面的错误,我假设它是导致问题的重定向之一。我之前在此处使用 Chrome 时遇到过重定向问题,虽然不在此特定页面上,但现在 Chrome 和 IE8 都可以正常加载它。

为您保存完整的堆栈跟踪,这似乎是最重要的东西:

SEVERE: Error loading JavaScript from [http://servicedeskmt.det.nsw.edu.au:8090/kinetic/displayPage.jsp/../resources/js/jquery/jquery-1.3.2.js].
com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 /kinetic/resources/js/jquery/jquery-1.3.2.js for http://servicedeskmt.det.nsw.edu.au:8090/kinetic/resources/js/jquery/jquery-1.3.2.js
at com.gargoylesoftware.htmlunit.WebClient.throwFailingHttpStatusCodeExceptionIfNecessary(WebClient.java:535)
INFO: statusCode=[404] contentType=[text/html]
Oct 31, 2011 2:31:29 PM com.gargoylesoftware.htmlunit.WebClient printContentIfNecessary
INFO: <html>
<head>
<title>Page cannot be found</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


</head>

<body bgcolor="#FFFFFF" text="#000000">
<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">There was 
    an error on the page you were attempting to reach or the page could not be 
    found.</font></b> <br>
  </p>
  <p><br>
    <br>
    <a href="http://www.kineticdata.com"><img src="resources/poweredByKS.gif" width="131" height="45" border="0"></a> 
  </p>
  </div>
</body>
</html>

任何建议将不胜感激。 谢谢。

编辑:添加更多细节 无论我是否将结果设置为等于新页面,loginButton.click() 都会发生错误。只是 loginButton.click() 的一行会导致长时间的停顿(就像我说的,页面需要一段时间才能加载),然后引发错误。如果我捕获异常然后尝试加载页面的登录版本,则会发生同样的事情,这告诉我我的登录尝试成功,但加载登录页面会导致问题。 将凭据存储在 DefaultCredentialsProvider 中,然后直接进入登录页面,会出现同样的错误。我想我可以肯定地说这是页面,而不是登录。

加载页面,并在同一语句中运行 javascript 或单击按钮,具有相同的效果。我希望页面的其他部分没有正确加载,但我仍然可以触发我想要的部分,但没有运气。

【问题讨论】:

  • 错误 404 表示找不到资源(网页和脚本)。尝试确保 HtmlUnit 注意到 8090 端口号。你的细节太少,很难知道哪里出了问题。但从错误来看,它表明尝试以某种方式连接到您的网页时出现问题。
  • 当 IE 和 Chrome 正常时,HtmlUnit 是否有任何理由会给出 404 错误?我如何确保 HtmlUnit 注意到 8090?我真的不明白你的意思。如果您需要任何额外的信息,我会提供,但显然我无法提供我正在登录的页面的任何详细信息。感谢您的回复。
  • @user1021379 你有没有得到这个工作?

标签: java htmlunit


【解决方案1】:

我遇到了类似的问题,并使用以下代码使其正常工作:

webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);

【讨论】:

    【解决方案2】:

    使用

    webClient.setThrowExceptionOnFailingStatusCode(false);
    

    【讨论】:

      【解决方案3】:

      我不在乎它是旧线程:P

      如果在日志中有“printContentIfNecessary”,你可以通过设置值来关闭它:

      webClient.getOptions().setPrintContentOnFailingStatusCode(false);
      

      对我有好处

      【讨论】:

        【解决方案4】:

        尝试其中一个或全部取决于您不想打印的内容

        参考文档:https://htmlunit.sourceforge.io/apidocs/com/gargoylesoftware/htmlunit/WebClientOptions.html

        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setThrowExceptionOnScriptError(false);       
        webClient.getOptions().setPrintContentOnFailingStatusCode(false);
        

        在我的情况下,我在控制台中遇到了很多错误,因为 webClient 无法加载 css,下面的设置对我有用:

        webClient.getOptions().setCssEnabled(false);
        

        【讨论】:

          猜你喜欢
          • 2014-12-10
          • 1970-01-01
          • 2018-10-13
          • 1970-01-01
          • 1970-01-01
          • 2020-08-23
          • 1970-01-01
          • 1970-01-01
          • 2019-10-30
          相关资源
          最近更新 更多