2010-12-14 3 views
1

Ich teste eine Website, die einige binäre (d. H. Nicht HTML-) Inhalte bereitstellt. Einige Links liefern direkt benutzerdefinierte Bilder, andere Links benutzerdefinierte PDFs.Überprüfen von binärem Inhalt mit WatiN

Ich baue Testfälle in WatiN und NUnit. Sie fragen sich, ob es eine Möglichkeit gibt, WatiN zu verwenden, um eine Seite zu laden und dann den Inhalt von byte [] auf dieser Seite zu erhalten.

Momentan starte ich gerade einen WebClient, um den Inhalt zu erfassen, anstatt über WatiN, aber das ist mehr ungetesteter Code in meiner Testsuite.

Wer macht das noch und hat Vorschläge?

Antwort

1

Es könnte einfacher sein, Wattin zu überspringen und HttpWebRequest zu verwenden, um den Inhalt direkt aus C# zu holen (in Ihrer Test- oder Testbibliothek).

K Scott Allen hat eine Blog-Post auf Binärdaten immer mit httpwebrequest hier: http://odetocode.com/Blogs/scott/archive/2004/10/05/webrequest-and-binary-data.aspx

Wenn Sie das Link-Ziel im Voraus nicht wissen (dynamisch URLs zum Beispiel erzeugt wird), dann Watin nutzen Sie den Link zu erhalten , dann HttpWebRequest, um den Inhalt zu erhalten.

Zitat von K Scott Allen's blog post oben, sollten Sie die Byte erhalten [] Sie nach

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

, die im Grunde ist, was ich tue. Obwohl ich WebClient anstelle von WebRequest verwendet habe. Ich glaube, ich habe mich gefragt, ob es etwas in WatiN gibt, um das zu tun. Ich fand, dass ich es oft genug getan habe, dass ich nur eine Behauptung dafür aufbaute. – jwadsack

+0

Da es keine integrierte Lösung zu geben scheint, markiere ich dies als die richtige Antwort. – jwadsack