我想模拟WebTestRequest类(在Visual Studio的测试工具框架中)的行为,它可以根据从原始请求获得的响应中引用的资源来调用相关请求。
例如,如果我发出Web请求并通过执行此操作获得响应:
string url = "http://www.mysite.com";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseText = reader.ReadToEnd();
}
我希望能够解析responseText
并查看是否有对其他资源的请求(例如js / css文件,图像等)
是否有一种简单的方法可以执行此操作?我对手动执行此操作犹豫不决,因为某些资源请求可能是以编程方式设置的,并且在简单的文本解析中可能并不明显。
答案 0 :(得分:0)
使用html / sgml解析器库。我不熟悉Visual Studio,但是有解析html的框架。找到一个并在API中查找与查找元素相关的内容。
答案 1 :(得分:0)
我有理由相信WebTestRequest本身只会执行“简单的文本解析”来确定依赖请求,因为它不知道javascript。因此,如果您要实现这样的话,那么您的代码将准确地模拟行为。
以下是我在粗略看一眼HMTL 4规范中可以找到的所有元素的列表,这些元素可以引用其他资源,因此需要进行解析:
<link href=
<img src=
<script src=
<iframe src=
<object data=
<area href=
不确定它是否详尽无遗。
顺便说一句,我很好奇你到底做了什么。
修改强>
某些资源请求可能以编程方式设置,并且在简单的文本解析中可能不明显
事实上,在某些时候确定解析html响应的相关请求是不可能的,我将举例说明:使用Google Web Toolkit开发的任何内容。在我测试的最近的GWT应用程序中,基本上没有没有可解析的html - 一切都是从javascript运行的。提取明显的路径名称(如果可用)甚至没有用,因为实际上条件逻辑选择了某些家属而不是其他家属。