WatiN generates blank pages

When capturing images using WatiN, the resulting images are simply empty, solid black. However, the size of the images is equal to the size of the screen. For example, the following snippet simply saves two black images.

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")); } 

Others also reported this, but I did not see any solution. See Comments here: 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

Hope anyone can shed some light on this.

Greetings // John

+2
source share
1 answer

I managed to get it to work on my web pages in IE8 with the following changes:

Replace the following method:

 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; } 

Remove the GetHwndContainingShellDocObjectView method and call to it.

+3
source

Source: https://habr.com/ru/post/891242/


All Articles