我正在测试一个提供一些二进制(即非HTML)内容的网站。有些链接直接提供自定义图像,其他链接自定义PDF。
我正在WatiN和NUnit中构建测试用例。想知道是否有办法,使用WatiN来加载页面,然后获取该页面的byte []内容。
目前,我只是推出一个WebClient来获取内容,而不是通过WatiN,但是我的测试套件中的代码更加未经测试。
其他人这样做并有建议吗?
答案 0 :(得分:1)
可能更容易跳过Watin并使用HttpWebRequest直接从C#中获取内容(在您的测试或测试库中)。
K Scott Allen在博客文章中使用HttpWebrequest获取二进制数据:http://odetocode.com/Blogs/scott/archive/2004/10/05/webrequest-and-binary-data.aspx
如果您事先不知道链接目标(例如动态生成的URL),则使用Watin获取链接,然后使用HttpWebRequest获取内容。
从上面的K Scott Allen's blog post引用,应该为你提供你在
之后的字节[]byte[] result;
byte[] buffer = new byte[4096];
WebRequest wr = WebRequest.Create(someUrl);
using(WebResponse response = wr.GetResponse())
{
using(Stream responseStream = response.GetResponseStream())
{
using(MemoryStream memoryStream = new MemoryStream())
{
int count = 0;
do
{
count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
} while(count != 0);
result = memoryStream.ToArray();
}
}
}