使用HtmlAgilityPack更好的HTML分析和验证

使用HtmlAgilityPack更好的HTML分析和验证

原文: http://www.cnblogs.com/oscarxie/archive/2007/11/14/959009.html

 让我们面对它,有时候,当您正在编写自定义的提取和验证规则时Microsoft.VisualStudio.TestTools.WebTesting.HtmlDocument 类不会剪切它。HtmlDocument最初设计是作为一个内部类非常有效地为HTML响应正文之外的从属请求(比如图像)分析URLs。VS 2005 RTM 之前,我们将HtmlDocument 作为公有WebTestFramework API的一部分,但是时间安排和资源约束阻止我们为其添加更多的常规目的 DOM 功能如InnerHtml、InnerText 和GetElementById。您可以自己分析HTML字符串,不过

幸运的是还有一个更好的选择:HtmlAgilityPack

HtmlAgilityPack 是CodePlex 上的一个开源项目。它提供了标准的DOM API 和XPath 导航--即使 HTML 不是适当的格式!

 下面是使用HtmlAgilityPack.HtmlDocument代替WebTestFramework中的Web测试示例。它简单验证微软主页在导航工具条上将Windows列为第一项。下载HtmlAgilityPack 并从您的测试项目添加对它的引用来尝试此编码 Web 测试。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Microsoft.VisualStudio.TestTools.WebTesting;
  5. using HtmlAgilityPack;
  6. public class WebTest1Coded : WebTest
  7. {
  8. public override IEnumerator<WebTestRequest> GetRequestEnumerator()
  9. {
  10. WebTestRequest request1 = new WebTestRequest("http://www.microsoft.com/");
  11. request1.ValidateResponse += new EventHandler<ValidationEventArgs>(request1_ValidateResponse);
  12. yield return request1;
  13. }
  14. void request1_ValidateResponse(object sender, ValidationEventArgs e)
  15. {
  16. //load the response body string as an HtmlAgilityPack.HtmlDocument
  17. HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
  18. doc.LoadHtml(e.Response.BodyString);
  19. //locate the "Nav" element
  20. HtmlNode navNode = doc.GetElementbyId("Nav");
  21. //pick the first <li> element
  22. HtmlNode firstNavItemNode = navNode.SelectSingleNode(".//li");
  23. //validate the first list item in the Nav element says "Windows"
  24. e.IsValid = firstNavItemNode.InnerText == "Windows";
  25. }
  26. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值