Проверка бинарного содержимого с помощью WatiN

Я тестирую сайт, который обслуживает некоторый двоичный (т.е. не-HTML) контент. Некоторые ссылки напрямую доставляют пользовательские изображения, другие — пользовательские PDF-файлы.

Я создаю тестовые примеры в WatiN и NUnit. Интересно, есть ли способ использовать WatiN, чтобы загрузить страницу, а затем получить содержимое byte[] этой страницы.

В настоящее время я просто запускаю WebClient для захвата контента, а не через WatiN, но это более непроверенный код в моем наборе тестов.

Кто-нибудь еще делает это и есть предложения?


person jwadsack    schedule 14.12.2010    source источник


Ответы (1)


Возможно, будет проще пропустить Watin и использовать HttpWebRequest для получения содержимого прямо из C# (в вашем тесте или тестовой библиотеке).

У К. Скотта Аллена есть сообщение в блоге о получении двоичных данных с помощью HttpWebrequest здесь: http://odetocode.com/Blogs/scott/archive/2004/10/05/webrequest-and-binary-data.aspx

Если вы заранее не знаете цель ссылки (например, динамически генерируемые URL-адреса), используйте Watin для получения ссылки, а затем HttpWebRequest для получения содержимого.

Цитата из сообщения в блоге К. Скотта Аллена выше, должен дать вам Byte[], который вам нужен

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();
      }
   }
}
person Andrew M    schedule 15.12.2010
comment
Это в основном то, что я делаю. Хотя я использовал WebClient, а не WebRequest. Думаю, мне было интересно, есть ли что-то в WatiN для этого. Я обнаружил, что делал это достаточно часто, чтобы просто создать для него утверждение. - person jwadsack; 17.12.2010
comment
Поскольку встроенного решения нет, я отмечаю это как правильный ответ. - person jwadsack; 30.12.2010