[翻译]使用HtmlAgilityPack更好的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 测试。
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分析和验证相关推荐
- 【翻译】Tricorder-谷歌如何建立程序分析的生态系统
I. 介绍II. 背景A. 开发流程B. 谷歌的程序分析III. 谷歌程序分析理念A. 0误报率B. 授权用户做出贡献C. 改进数据驱动的可用性D. 工作流集成是关键E. 项目级别定制,而不是用户定制 ...
- Smartbi带你了解“更智能”的透视分析
说到透视分析,我们先了解一个概念:数据透视表, 是一种交互式的表,可以进行某些计算,如求和与计数等.所进行的计算与数据跟数据透视表中的排列有关.之所以称为数据透视表,是因为可以动态地改变它们的版面布置 ...
- Solr配置文件分析与验证
前面一篇开始学习solr的时候,做了个入门的示例http://6738767.blog.51cto.com/6728767/1401865.虽然可以检索出内容,但总和想象的结果有差异--比如,检索&q ...
- 人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法
人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法 随着深度学习革命的不断发展,AI算法驱动的软件产品越来越影响我们的生活.比如人脸识别.机器翻译等应用越来越广泛,技术也在像纵深方向发展, ...
- 多通路fpga 通信_【论文精选】基于FPGA的EtherCAT从站通信链路分析与验证
原标题:[论文精选]基于FPGA的EtherCAT从站通信链路分析与验证 马保全1,2,姚旺君1,2,刘云龙1,2,张晓莉1,2,黄 兵1,2,赵德政1,2 (1.工业控制系统信息安全技术国家工程实验 ...
- axivion和astree_Axivion架构分析及验证工具
德国Axivion公司 德国Axivion 公司是一家完全自主的技术公司,公司保持持续增长,在软件开发解决方案领域拥有超过10年的经验.作为源于斯图加特大学的公司, Axivion公司提供了一个良好的 ...
- 安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证
漏洞简介 Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行). 受影响的版本: Apache Solr6.6.0 ...
- Apache Solr 未授权上传(RCE)漏洞(CVE-2020-13957)的原理分析与验证
聚焦源代码安全,网罗国内外最新资讯! 01 漏洞简介 Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行). 受影 ...
- Symtavision—分布式嵌入式系统时间建模分析和验证工具
Symtavision工具为Luxoft公司提供的一款分布式嵌入式系统时间特性建模.分析和验证工具,主要应用于汽车领域.经纬恒润联合Symtavision工具厂商能够为客户提供完整的系统级时间特性建模 ...
最新文章
- TS中的感叹号和问号的用法
- 【Harvest源码分析】GetFourZeroCrossingIntervals函数
- 浅析手机端网站建设的基本流程
- websocket 连接本地端口_聊聊 WebSocket,还有 HTTP
- 为什么数据科学家需要承担开发运维的工作?
- Python:IPython性能度量
- PHP常用函数总结(一):
- Android 圆形进度条控件
- 亚马逊网上书店、巴诺书店最佳畅销书《最后期限》
- MP4文件损坏怎么修复
- java常用英语单词大全(一)
- 为什么要使用memcache?memcache有什么作用?
- jQuery的属性,位置,元素操作
- Linux账号管理和ACL
- Linux学习笔记1(鸟哥的私房菜)
- GBDT(MART)概念简介
- Linux 内核clk 添加clk provider
- JDK1.8中文文档-阿里云盘
- Docker本地镜像推送到私有库
- DEFORM-GAN:AN UNSUPERVISED LEARNING MODEL FOR DEFORMABLE REGISTRATION
热门文章
- 尹伊:用敏捷开发思维来成长!
- 从0梳理1场CV缺陷检测赛事!
- CVPR 2021:记一次神奇的 Rebuttal 经历
- 4岁学编程,19岁创办以太坊,4年十亿身家!
- 堪比当年的LSTM,Transformer引燃机器学习圈:它是万能的
- 一文理解Ranking Loss/Margin Loss/Triplet Loss
- 【AI思辨】八年之痒!除了NLP和CV,人工智能就不能干点别的啥了?
- 在坚持了15年后,我毅然决定离开 Linux,投入 Mac 的怀抱
- CentOS7修改时区,你会吗?
- Linux内核网络栈1.2.13-网卡设备的初始化流程