【问题标题】:Verifying binary content with WatiN使用 WatiN 验证二进制内容
【发布时间】:2011-05-25 13:30:10
【问题描述】:

我正在测试一个提供一些二进制(即非 HTML)内容的网站。一些链接直接提供自定义图像,其他链接自定义 PDF。

我正在用 WatiN 和 NUnit 构建测试用例。想知道是否有办法,使用 WatiN 让它加载一个页面,然后获取该页面的 byte[] 内容。

目前,我只是启动一个 WebClient 来获取内容,而不是通过 WatiN,但这是我的测试套件中更多未经测试的代码。

还有其他人这样做并有建议吗?

【问题讨论】:

    标签: asp.net unit-testing nunit watin


    【解决方案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();
          }
       }
    }
    

    【讨论】:

    • 这基本上就是我正在做的事情。虽然我使用的是 WebClient 而不是 WebRequest。我想我想知道 WatiN 中是否有什么东西可以做到这一点。我发现我经常这样做,我只是为它建立一个断言。
    • 由于似乎没有内置解决方案,我将其标记为正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多