2010-12-14 44 views
1

Je teste un site qui fournit du contenu binaire (c'est-à-dire non HTML). Certains liens offrent directement des images personnalisées, d'autres liens personnalisés PDF.Vérification du contenu binaire avec WatiN

Je construis des cas de test dans WatiN et NUnit. Vous vous demandez s'il y a un moyen, en utilisant WatiN pour l'obtenir charger une page et ensuite obtenir le contenu de byte [] de cette page.

Actuellement, je lance un WebClient pour récupérer le contenu, plutôt que via WatiN, mais c'est du code plus non testé dans ma suite de tests.

Quelqu'un d'autre fait cela et a des suggestions?

Répondre

1

Il peut être plus facile d'ignorer Watin et d'utiliser HttpWebRequest pour extraire le contenu directement de C# (dans votre test ou bibliothèque de test).

K Scott Allen a un billet de blog sur l'obtention de données binaires en utilisant HttpWebRequest ici: http://odetocode.com/Blogs/scott/archive/2004/10/05/webrequest-and-binary-data.aspx

Si vous ne connaissez pas la cible du lien à l'avance (généré dynamiquement les URL par exemple), puis utilisez Watin pour obtenir le lien , puis HttpWebRequest pour obtenir le contenu.

Citation de K Scott Allen's blog post ci-dessus, vous devriez obtenir l'octet [] que vous êtes après

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(); 
     } 
    } 
} 
+0

C'est essentiellement ce que je fais. Bien que j'utilise WebClient plutôt que WebRequest. Je suppose que je me demandais s'il y avait quelque chose à WatiN pour le faire. J'ai trouvé que je l'ai fait assez souvent que je viens de construire une assertion pour cela. – jwadsack

+0

Comme il ne semble pas y avoir de solution intégrée, je marque ceci comme la bonne réponse. – jwadsack