WatiN generates empty pages

Deadly 提交于 2019-12-11 01:26:03

问题


When capturing images using WatiN the resulting images are just empty, solid black. The size of the images equals the screen size, though. For example the following snippet just 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"));
        }

Other have reported this as well but I haven't seen 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 any can shed some light on this.

Cheers // John


回答1:


I managed to get it working for my web pages under 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 method GetHwndContainingAShellDocObjectView and the call to it.



来源:https://stackoverflow.com/questions/779223/watin-generates-empty-pages

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!