【问题标题】:Html Parser & Object Model for .net/C#.net/C# 的 Html 解析器和对象模型
【发布时间】:2010-11-14 03:23:41
【问题描述】:

我正在寻找使用 .net 解析 html 以测试或断言其内容的目的。 即

HtmlDocument doc = GetDocument("一些 html") 列出表单 = doc.Forms() 链接链接 = doc.GetLinkByText("新客户")

这个想法是允许人们用 c# 编写测试,就像他们在 webrat (ruby) 中所做的那样。

访问('\') 填写“姓名”、“米克” 点击“保存”

我见过 html 敏捷包、sgmlreader 等,但有没有人为此创建了一个对象模型,即一组代表 html 元素的类,例如表单、按钮等??

干杯。

【问题讨论】:

  • Html Agility Pack 似乎非常适合您的目的,但您必须使用 XPATH 来查询 XML。
  • 你真的读过这个问题吗???
  • John Saunders 向我指出他想要一个 Html Agility Pack 的替代品,但在我看来它非常适合这个目的,我想指出这一点。

标签: c# .net html asp.net-mvc parsing


【解决方案1】:

Here 是很好的 html 解析库,不会创建 HtmlButton 、 HtmlInput 等对象,但如果您不想使用 HTML DOM,最好自己开始并创建它们

【讨论】:

    【解决方案2】:

    据我所知,在 .NET 中最接近 HTML DOM 的是 HTML DOM。

    您可以使用 Windows 窗体 WebBrowser 控件,将其与 HTML 一起加载,然后从外部访问 DOM。

    顺便说一句,这是 .NET。任何适用于 VB.NET 的代码都适用于 C#。

    【讨论】:

    • 我不想为此开始托管 UI 控件,然后我将讨论 UI 控件的常见线程问题,另外性能会受到影响,我正在使用它来测试 asp.net mvc 页面,并且由于浏览器开销而避免使用 selenium 等。理想的情况是 HtmlUnit(基于 Java)。不确定我是否有时间将其移植为怪物,它也支持 javascript,但我不需要它来测试我的应用程序(即不引人注目)。
    • 来自 HmlUnit: final WebClient webClient = new WebClient(); final HtmlPage page = webClient.getPage("htmlunit.sourceforge.net"); final HtmlDivision div = page.getHtmlElementById("some_div_id"); final HtmlAnchor anchor = page.getAnchorByName("anchor_name"); htmlunit.sourceforge.net
    • cmets 中没有太多格式。用下划线或单个星号星号或backQuotes<T>三重括起来> 星号。但它是有限的,应该是这样的。
    • WebBrowser 控件的好处 - 它是 IE。它的行为就像 IE 一样。这对于 AJAX 场景或动态生成某些 HTML 的任何其他情况非常重要。您实际上可以找到元素并调用它们的 click 方法,以触发在普通浏览器中运行的 JavaScript。
    【解决方案3】:

    您有 2 个主要选择:

    1. 使用一些浏览器引擎(即 Internet Explorer)为你解析 html,然后让你访问生成的 DOM。此选项将要求您与浏览器引擎进行一些互操作(在即它是简单 COM 的情况下)

    2. 使用一些轻量级解析器,例如HtmlAgilityPack

    【讨论】:

    • -1: 1。这就是我 15 分钟前的回答。 2. 阅读问题。他知道 HtmlAgilityPack 并且不想要它。
    【解决方案4】:

    在我看来,您正在尝试进行 HTML 单元测试。你看过硒吗?它甚至具有 C# 库,因此您可以用 C# 编写 HTML 单元测试并断言元素存在并且它们具有正确的值,甚至可以单击链接。它甚至适用于 JavaScript / AJAX 网站。

    【讨论】:

    • 它对我想要的来说太慢了。基本上在 Rails 中我使用 webrat 进行大部分验收测试,它是一个内存浏览器(基本上是一个 html 解析器),因为它非常快,然后我可以使用 watir/selenium 等进行冒烟测试,但它的速度很慢所以我不想用它来做所有事情。
    【解决方案5】:

    HTML 的最佳解析器是 HTQL COM。使用可以使用 HTQL 查询来检索 HTML 内容。

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 2023-02-05
      • 2012-01-25
      • 1970-01-01
      • 2012-08-01
      • 2012-12-30
      • 2011-11-10
      • 2012-07-10
      • 2017-11-02
      相关资源
      最近更新 更多