【问题标题】:How can I keep my doctype with htmlunit + the page.asXml method如何使用 htmlunit + page.asXml 方法保留我的文档类型
【发布时间】:2011-05-18 03:59:51
【问题描述】:

当我使用 HtmlUnit 运行 page.asXml() 时,我丢失了页面的文档类型。有解决办法吗?

注意:目的是为 Google 提供 DOM。

【问题讨论】:

  • 贴出您正在使用的代码会很有帮助,并通过丢失页面的文档类型准确地表明您的意思。
  • Rodney,我觉得最好不要用代码使这个复杂化,因为我正在使用 IKVM 在 .net 中运行 HtmlUnit。我的页面按照我们的方式正确加载了 99.99%。唯一明显的区别是 doctype 排除,当包含它时,页面呈现完全相同。
  • 仍然不确定“丢失文档类型”是什么意思... asXml() 只返回页面 HTML 的字符串。你是说调用 asXml() 会改变页面对象吗?
  • 是的,所以我的页面上有一个 的 html 5 doctype,asXml 删除了它。我的临时修复是: return page.asXml().Replace("", "");

标签: seo integration-testing doctype htmlunit headless


【解决方案1】:

尝试调用

p.getWebResponse().getContentAsString() 

而不是

p.asXml()

我刚刚对http://google.com 进行了尝试,在前一种情况下,“”仍保留在输出中。

【讨论】:

  • 感谢您的回复。我尝试了您的代码,发现它没有返回执行/评估的 javascript,就像 asXml 对等待后台 javascripts 方法所做的那样。我检查了 API,它说这是原始的 Web 响应,这不是我真正想要的。我的解决方案,暂时有效:-\
  • +1:“丢失”的文档类型可以通过解析getContentAsString()重新获得。似乎 OP 不想这样做,而是想硬编码<!DOCTYPE html> 的新文档类型。
猜你喜欢
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2019-09-02
  • 1970-01-01
  • 2015-11-26
相关资源
最近更新 更多