当前位置: 首页 > 知识库问答 >
问题:

HtmlUnit超时调试

仉明知
2023-03-14

我正在使用HtmlUnit登录网站。尽管设置了连接超时和Javascript超时,但脚本在尝试登录站点时仍然挂起。本网站是一个内部网页,不对Web开放。

下面是我正在使用的webClient配置

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

            }
      };

    webClient.setRefreshHandler(rh);

    webClient.getOptions().setTimeout(90000);  //Set Connection Timeout to 1.5 minute 
    webClient.setJavaScriptTimeout(45000);     //Set JavaScript Timeout to 0.75 minute

    webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.setAjaxController(new NicelyResynchronizingAjaxController());
    webClient.getCookieManager().setCookiesEnabled(true);

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

     System.setProperty("https.protocols", "SSLv3,SSLv2Hello");

注意:我使用的是IBM JDK1.7和HTMLUnit2.12(最新版本)。我已经在我的项目的buildpath中包含了所有21个依赖项JAR。它不使用任何日志记录机制。它使用println语句打印出控制台上的所有内容。

System.getProperties().put("org.apache.commons.logging.simplelog.defaultlog", "debug");  

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.All);

java.util.logging.Logger.getLogger("org.apache.http").setLevel(Level.All);

第一个是在HtmlUnit主页上的“日志”部分指定的。

我感谢你的帮助/意见。谢谢

共有1个答案

佴保臣
2023-03-14

由于我不太清楚下面这行是做什么的,所以我将回答它,因为它不在那里:

System.setProperty("https.protocols", "SSLv3,SSLv2Hello");

您应该首先尽可能地简化代码,以获得最小的情况(例如:您还没有澄清您的应用程序是否在禁用javascript的情况下挂起。

一旦完成了这些操作,就应该仔细查看所获取的HtmlPage。检查页面正在获取的其他对象,特别是Iframes。然后看看这个问题和答案:

 类似资料:
  • 问题内容: 我一直在使用HTMLUnit。非常适合我的要求。但这似乎非常缓慢。例如:我已经使用HTMLUnit自动化了以下场景 代码: 它运作良好100%。但是需要3分41秒 我想执行缓慢的原因是要验证页面上的每个元素。 我的问题是如何减少HTMLUnit的执行时间?有什么方法可以禁用网页上的验证。 提前致谢! 问题答案: 对于当前的htmlUnit 2.13,设置选项与maxmax提供的设置略有

  • 我有与K8s集成的集群自动缩放器,工作节点从0缩放。我希望每个节点不调度超过2个豆荚。我在库贝莱特等级上设置了吊舱限制。当我用4个吊舱并行运行5个作业时,它限制扩展3个节点,但它试图只在2个节点和一个吊舱上调度,以减少到期限制。在K8S中是否有调度限制参数?只在特定时间(一些睡眠参数)后安排豆荚?当所有工人都准备好时,我们需要等待

  • 我正在使用WebSocket ApiGateway和AWS Lambda集成。当我尝试使用方法向客户机发送数据时,Lambda函数总是超时而不会出现任何错误消息。只有超时消息才会登录到CloudWatch中: 我做错了什么?

  • 我们正在尝试开发一个自调用的lambda来成批处理S3文件。lambda角色具有附加调用所需的策略。 以下是自调用lambda的代码: 其中是对同一个lambda的调用调用。其余的事情都按预期工作,只要调用堆栈出现在这个调用请求上,它就会超时: 这是记录到CloudWatch的堆栈跟踪:

  • HtmlUnit 是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架结构的 Java™ 测试程序。

  • 问题内容: 我正在Python中调用一个函数,该函数可能会停滞并迫使我重新启动脚本。 如何调用该函数或将其包装在其中,以便如果花费的时间超过5秒,脚本将取消该函数并执行其他操作? 问题答案: 如果在上运行,则可以使用信号包: 调用后10秒钟,将调用处理程序。这引发了一个异常,你可以从常规Python代码中拦截该异常。 该模块不能很好地与线程配合使用(但是,谁可以呢?) 请注意,由于发生超时时会引发