`
Foxswily
  • 浏览: 77432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HtmlUnit 2.6处理页面刷新的bug

阅读更多

HtmlUnit 2.6做了大量针对Javascript的工作,极大的提升了可用性,比如过去想做Form提交,要找到form所有元素,赋值后submit,一旦加了js处理或变更元素就麻烦了,现在可以简单的用focus,click,type之类的方式实现,很惬意。

尝试用来登录论坛,发现某些情况下登录会Exception,具体如下

        //初始页面
        HtmlPage page = client.getPage("http://xxx.com");
        //xxxMap保存要填入的key/value对,key可以是页面id或name
        //getElementByStr结合了ById和ByName方式
        for (Entry<String, String> item : xxxMap.entrySet()) {
            HtmlElement elmt = getElementByStr(page, item.getKey());
            elmt.click(); //触发点击这个文本框的某些js,比如清空
            elmt.type(item.getValue()); //输入值
        }
        //找到提交按钮
        HtmlButton loginBtn = (HtmlButton) getElementByStr(page, submitBtnName);
        //执行点击动作
        Page resultPage = loginBtn.click();
        log.debug(resultPage.getWebResponse().getContentAsString());
 

某些版本的论坛,登录后有自动跳转

<META HTTP-EQUIV="Refresh" CONTENT="3;URL=http://www.some.org/some.html">

 

毛病就出在CONTENT="3;..."这里,某些论坛不使用";"间隔,而是空格,造成HtmlUnit处理错误,存照与此,避免类似的困扰。

 

分享到:
评论

相关推荐

    htmlunit-2.6

    htmlunit-2.6 用于网络爬虫,自动化测试,java包。

    htmlunit爬取动态页面jar包

    HTMLUnit可以处理这些情况,因为它能够执行页面上的JavaScript代码,从而获取完整的内容。 这个"htmlunit爬取动态页面包"中的jar文件可能包括以下几个部分: 1. **HtmlUnit本身**:这是主要的库,提供了模拟浏览器...

    htmlunit-2.6-javadoc.chm

    自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。

    HttpClient4.1.2 & HtmlUnit2.9 处理文件下载

    HttpClient4.1.2 和 HtmlUnit2.9 是在Java编程中处理网络请求和网页解析的两个重要库。这篇博客文章可能详细介绍了如何利用这两个库来实现文件的下载功能。 HttpClient 是Apache基金会的一个项目,提供了丰富的HTTP...

    基于ApacheNutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件nutch-htmlunit.zip

    导致htmlunit无法直接感知到需要等待Kissy发起的请求完成,通过等待页面加载解析内容判断处理实现此类页面数据抓取。 基于页面滚动的AJAX请求页面抓取: 诸如淘宝/天猫的商品详情页面会基于页面滚动发起...

    Htmlunit2.23-bin.zip

    7. 利用HTMLUnit的异步功能处理AJAX请求,等待页面完全加载。 HTMLUnit的一个显著优点是它的速度,因为不需要启动真正的浏览器实例,所以执行速度比使用Selenium等其他工具要快得多。然而,由于它是一种无头浏览器...

    htmlunit基本jar包

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个"htmlunit基本jar包"包含了运行HTMLUnit所需的所有核心组件,无需通过Maven来管理和依赖。这意味着用户可以直接在项目中...

    htmlUnit所需jar包

    3. **JavaScript支持**:由于HTML页面经常涉及JavaScript,HTMLUnit内嵌了 Rhino 或 Nashorn JavaScript引擎来处理页面上的脚本。 4. **HTTP客户端库**:可能包含Apache HttpClient或其他类似的库,用于处理网络...

    htmlunit所需要jar包

    4. **apache-mime4j-0.6.jar**:Apache MIME4J是处理MIME消息的Java库,它支持解析、构建和操作MIME消息,对于处理HTMLUnit可能遇到的复杂邮件格式的网页内容很有用。 5. **sac-1.3.jar**:SAC(Simple API for CSS...

    最新版HtmlUnit2.22含API文档

    2. **Ajax支持**:由于Ajax技术在现代Web应用中的广泛使用,HtmlUnit能够处理异步请求,模拟浏览器刷新和页面部分更新。 3. **浏览器兼容性**:尽管HtmlUnit并不是一个真正的浏览器,但它尽力模仿不同浏览器的行为...

    htmlunit依赖jar包

    HTMLUnit是一款功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者在没有真实浏览器环境的情况下执行JavaScript,处理Ajax请求,以及与网页进行交互。这个库对于自动化测试、数据抓取和网页爬虫项目非常有用...

    通过htmlunit获取执行js代码后的html文档

    HTMLUnit内建了一个基于WebClient的组件,它能够加载网页、执行JavaScript和处理DOM(文档对象模型)。以下是使用HTMLUnit进行此类操作的基本步骤: 1. **导入库**:在Java项目中,你需要添加HTMLUnit的依赖。如果...

    htmlunit 及其 依赖包

    5. **异常处理**:在使用HTMLUnit进行网页抓取时,需要注意异常处理,因为网络问题、网页结构改变或JavaScript错误都可能导致运行时异常。因此,良好的错误处理机制是必要的,以确保程序的健壮性。 6. **依赖管理**...

    com.gargoylesoftware.htmlunit-2.29所需包

    2. **JavaScript支持**:HTMLUnit内建了一个JavaScript引擎,可以执行页面上的脚本,这对于处理动态加载的内容至关重要。 3. **CSS选择器支持**:它提供了对CSS选择器的支持,方便查找和操作DOM元素。 4. **模拟用户...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    同时,理解如何处理异步加载的内容和JavaScript生成的动态内容,也是成功爬取现代Web页面的关键。 总的来说,HTMLUnit是一个强大的工具,可以帮助开发者构建高效的Java爬虫,同时提供了对JavaScript支持,使得爬取...

    htmlunit-2.3..zip

    然而,HTMLUnit也有一些局限性,例如对某些复杂的JavaScript库支持可能不够完善,或者在处理某些CSS和HTML特性时可能存在bug。因此,在进行复杂的Web应用测试时,开发者可能需要结合其他工具,如Selenium WebDriver...

    htmlunit-2.14

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和抓取。这个库的核心功能是能够解析、渲染和执行JavaScript,从而使得开发者可以在没有实际浏览器环境的情况下,对网页进行功能测试...

    htmlunit依赖的所有jar

    这个例子展示了如何启动一个HtmlUnitDriver,导航到一个网页,并打印出页面标题。 请注意,具体的JAR文件版本可能会随着HTMLUnit的更新而变化,因此在实际使用时,最好参考HTMLUnit的官方文档或最新的Maven依赖来...

    htmlunit-2.1.5源码

    5. **异常处理和错误报告**:HTMLUnit在遇到JavaScript错误或其他问题时会抛出异常,这有助于调试和定位代码中的问题。 6. **性能**:由于其轻量级设计,HTMLUnit通常比其他完整的Web浏览器模拟器(如Selenium ...

Global site tag (gtag.js) - Google Analytics