让我们面对它,有时候,当您正在编写自定义的提取和验证规则时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 测试。

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.VisualStudio.TestTools.WebTesting;

using HtmlAgilityPack;

public class WebTest1Coded : WebTest

{

public override IEnumerator<WebTestRequest> GetRequestEnumerator()

{

WebTestRequest request1 = new WebTestRequest("http://www.microsoft.com/");

request1.ValidateResponse += new EventHandler<ValidationEventArgs>(request1_ValidateResponse);

yield return request1;

}

void request1_ValidateResponse(object sender, ValidationEventArgs e)

{

//load the response body string as an HtmlAgilityPack.HtmlDocument

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(e.Response.BodyString);

//locate the "Nav" element

HtmlNode navNode = doc.GetElementbyId("Nav");

//pick the first <li> element

HtmlNode firstNavItemNode = navNode.SelectSingleNode(".//li");

//validate the first list item in the Nav element says "Windows"

e.IsValid = firstNavItemNode.InnerText == "Windows";

}

}

                          JoshCh发布于星期天,2006年12月10日下午9点56分

原文地址:http://blogs.msdn.com/joshch/archive/2006/12/10/be...

[翻译]使用HtmlAgilityPack更好的HTML分析和验证相关推荐

  1. 【翻译】Tricorder-谷歌如何建立程序分析的生态系统

    I. 介绍II. 背景A. 开发流程B. 谷歌的程序分析III. 谷歌程序分析理念A. 0误报率B. 授权用户做出贡献C. 改进数据驱动的可用性D. 工作流集成是关键E. 项目级别定制,而不是用户定制 ...

  2. Smartbi带你了解“更智能”的透视分析

    说到透视分析,我们先了解一个概念:数据透视表, 是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关.之所以称为数据透视表,是因为可以动态地改变它们的版面布置 ...

  3. Solr配置文件分析与验证

    前面一篇开始学习solr的时候,做了个入门的示例http://6738767.blog.51cto.com/6728767/1401865.虽然可以检索出内容,但总和想象的结果有差异--比如,检索&q ...

  4. 人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法

    人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法 随着深度学习革命的不断发展,AI算法驱动的软件产品越来越影响我们的生活.比如人脸识别.机器翻译等应用越来越广泛,技术也在像纵深方向发展, ...

  5. 多通路fpga 通信_【论文精选】基于FPGA的EtherCAT从站通信链路分析与验证

    原标题:[论文精选]基于FPGA的EtherCAT从站通信链路分析与验证 马保全1,2,姚旺君1,2,刘云龙1,2,张晓莉1,2,黄 兵1,2,赵德政1,2 (1.工业控制系统信息安全技术国家工程实验 ...

  6. axivion和astree_Axivion架构分析及验证工具

    德国Axivion公司 德国Axivion 公司是一家完全自主的技术公司,公司保持持续增长,在软件开发解决方案领域拥有超过10年的经验.作为源于斯图加特大学的公司, Axivion公司提供了一个良好的 ...

  7. 安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证

    漏洞简介 Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行). 受影响的版本: Apache Solr6.6.0 ...

  8. Apache Solr 未授权上传(RCE)漏洞(CVE-2020-13957)的原理分析与验证

     聚焦源代码安全,网罗国内外最新资讯! 01 漏洞简介 Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行). 受影 ...

  9. Symtavision—分布式嵌入式系统时间建模分析和验证工具

    Symtavision工具为Luxoft公司提供的一款分布式嵌入式系统时间特性建模.分析和验证工具,主要应用于汽车领域.经纬恒润联合Symtavision工具厂商能够为客户提供完整的系统级时间特性建模 ...

最新文章

  1. TS中的感叹号和问号的用法
  2. 【Harvest源码分析】GetFourZeroCrossingIntervals函数
  3. 浅析手机端网站建设的基本流程
  4. websocket 连接本地端口_聊聊 WebSocket,还有 HTTP
  5. 为什么数据科学家需要承担开发运维的工作?
  6. Python:IPython性能度量
  7. PHP常用函数总结(一):
  8. Android 圆形进度条控件
  9. 亚马逊网上书店、巴诺书店最佳畅销书《最后期限》
  10. MP4文件损坏怎么修复
  11. java常用英语单词大全(一)
  12. 为什么要使用memcache?memcache有什么作用?
  13. jQuery的属性,位置,元素操作
  14. Linux账号管理和ACL
  15. Linux学习笔记1(鸟哥的私房菜)
  16. GBDT(MART)概念简介
  17. Linux 内核clk 添加clk provider
  18. JDK1.8中文文档-阿里云盘
  19. Docker本地镜像推送到私有库
  20. DEFORM-GAN:AN UNSUPERVISED LEARNING MODEL FOR DEFORMABLE REGISTRATION

热门文章

  1. 尹伊:用敏捷开发思维来成长!
  2. 从0梳理1场CV缺陷检测赛事!
  3. CVPR 2021:记一次神奇的 Rebuttal 经历
  4. 4岁学编程,19岁创办以太坊,4年十亿身家!
  5. 堪比当年的LSTM,Transformer引燃机器学习圈:它是万能的
  6. 一文理解Ranking Loss/Margin Loss/Triplet Loss
  7. 【AI思辨】八年之痒!除了NLP和CV,人工智能就不能干点别的啥了?
  8. 在坚持了15年后,我毅然决定离开 Linux,投入 Mac 的怀抱
  9. CentOS7修改时区,你会吗?
  10. Linux内核网络栈1.2.13-网卡设备的初始化流程