2009-04-22 10 views
2

WatiNを使用して画像をキャプチャすると、結果の画像は空白になります。しかし、画像のサイズは画面のサイズと同じです。たとえば、次のスニペットは2つの黒い画像を保存するだけです。WatiNは空のページを生成します

using (IE ie = new IE()) { 
      ie.ClearCache(); 
      ie.BringToFront(); 
      ie.GoTo("http://localhost/"); 
      ie.CaptureWebPageToFile(imageDir + "\\localhost.png"); 
      WatiN.Core.CaptureWebPage capture = new CaptureWebPage(ie); 
      capture.CaptureWebPageToFile(imageDir + "\\localhost.jpg", true, true, 100, 80); 
      Assert.IsTrue(ie.ContainsText("Zend")); 
     } 

他にもこれが報告されていますが、解決策はありませんでした。ここのコメントを参照してください: http://www.codeproject.com/KB/graphics/IECapture.aspx?display=PrintAll&fid=192174&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=51&select=1810490

希望は、これについていくつかの光を当てることができます。

乾杯 //ジョン

+0

どのバージョンのIEとWatiNを使用していますか? –

+0

こんにちは! Win2003 ServerでIE 7(7.0.5730.13)とWinXPでIE 8(8.06001.18702)の両方を試しました。私はIE8でも、成功せずにcomaptibilityモードを設定しようとしました。最もフラストレーションのあることは、2ヶ月前にいくつかのスクリーンショットを作ったときに完全に機能したことです。しかし、私はIE7を使いました。 Watinはバージョン1.3.0.4000です。バイナリ版と自己コンパイル版の両方を試しました(jpgイメージ形式はバイナリで動作しました)。 スクリーンショットは、nunitで実行されるnunitテストの一部として作成されます。 ありがとうございます! // John –

+0

こんにちはJon、今後のWatiN 2.0 beta 2には、IE8のスクリーンショットをキャプチャするための修正があります。 HTV、Jeroen –

答えて

3

は、私はそれは次のように変更とIE8の下で私のWebページのために働いて得ることができた:

private static IntPtr GetHwndForInternetExplorerServer(IntPtr hwnd) 
{ 
    var sbc = new StringBuilder(256); 
    hwnd = NativeMethods.GetWindow(hwnd, NativeMethods.GW_CHILD); 
    while (hwnd != IntPtr.Zero) 
    { 
     NativeMethods.GetClassName(hwnd, sbc, 256); 
     if (sbc.ToString().IndexOf("Shell DocObject View", 0) > -1) //IE6 
     { 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "Internet Explorer_Server", IntPtr.Zero); 
      break; 
     } 
     if (sbc.ToString().IndexOf("TabWindowClass", 0) > -1) //IE7 
     { 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "Shell DocObject View", IntPtr.Zero); 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "Internet Explorer_Server", IntPtr.Zero); 
      break; 
     } 
     if (sbc.ToString().IndexOf("Frame Tab", 0) > -1) // IE8 
     { 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "TabWindowClass", IntPtr.Zero); 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "Shell DocObject View", IntPtr.Zero); 
      hwnd = NativeMethods.FindWindowEx(hwnd, IntPtr.Zero, "Internet Explorer_Server", IntPtr.Zero); 
      break; 
     } 
     hwnd = NativeMethods.GetWindow(hwnd, NativeMethods.GW_HWNDNEXT); 
    } 
    return hwnd; 
} 

は、メソッドGetHwndContainingAShellDocObjectViewを削除します。

は、以下の方法を交換してくださいそしてそれへの呼び出し。

関連する問題