栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

非常简单的代码在HtmlUnit中不起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

非常简单的代码在HtmlUnit中不起作用

好吧,尽管这是一个可怕的解决方案(实际上,解决方法……),但我最终决定按照HtmlUnit的开发人员之一的建议,在HtmlUnit中禁用自动加载帧。这是我详细做的:

  1. 下载了HtmlUnit源
  2. 从这里下载maven
  3. 注释了
    loadframes()
    位于以下位置的HtmlPage类的方法的内容(方法的主体,而不是声明)
    htmlunit-2.9/src/main/java/com/gargoylesoftware/htmlunit/html
  4. 使用以下命令编译了此自定义代码跳过测试:
    mvn -Dmaven.test.skip=true clean compile package
  5. 找到新
    htmlunit-2.9.jar
    htmlunit-2.9/artifacts
    并替换了当前
    htmlunit-2.9.jar
    库文件
  6. 这一步可能是最微妙的一步,因为它取决于每个应用程序。但是,我将向您展示我需要对应用程序进行的更改。

您知道我的原始代码如何(看问题)。这将从页面下载所有框架和iframe。我正在添加一个示例,说明如何获取仅包含所需框架的框架页面:

try {    HtmlPage page = webClient.getPage("http://www.w3schools.com/HTML/tryit.asp?filename=tryhtml_noframes");    HtmlInlineframe frame = page.getFirstByXPath("//iframe[@name='view']");    page = webClient.getPage(page.getFullyQualifiedUrl(frame.getSrcAttribute()));    System.out.println(page.asXml());} catch (Exception e) {    e.printStackTrace();}

更改此库后,一旦

getPage()
方法完成,框架的内容将为空。注意它不会为空,看起来就像只是返回一个空框架。我们需要做的是手动下载我们感兴趣的框架的内容,这就是为什么我要
getPage()
再次执行。

好吧,这就是我设法使用HtmlUnit有选择地下载框架和iframe的方式。任何有关如何改善这一点的想法将不胜感激。无论如何,我希望将来会增加某种方式来禁用HtmlUnit本身中的帧加载,也许添加诸如之类的方法

getPage(URLurl, boolean downloadframes)

希望这可以帮助某人!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号