public static AlertAndConfirmDialogHandler getAlertsHandler(this WatiN_IE watinIe)
        {
            var alertHandler = watinIe.dialogHandler <AlertAndConfirmDialogHandler>();

            if (alertHandler.isNull())
            {
                alertHandler = new AlertAndConfirmDialogHandler();
                watinIe.IE.AddDialogHandler(alertHandler);
            }
            return(alertHandler);
        }
        public static string open_and_HandleFileDownload(this WatiN_IE watinIe, string url, string fileName)
        {
            var tmpFile           = fileName.tempFile();
            var waitUntilHandled  = 20;
            var waitUntilDownload = 300;

            var fileDownloadHandler = watinIe.dialogHandler <FileDownloadHandler>();

            if (fileDownloadHandler.notNull())
            {
                watinIe.IE.RemoveDialogHandler(fileDownloadHandler);
            }

            fileDownloadHandler = new FileDownloadHandler(tmpFile);
            watinIe.IE.AddDialogHandler(fileDownloadHandler);


            fileDownloadHandler.field("saveAsFilename", tmpFile);
            fileDownloadHandler.field("hasHandledFileDownloadDialog", false);

            watinIe.open_ASync(url);
            try
            {
                fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(waitUntilHandled);
                "after: {0}".info("WaitUntilFileDownloadDialogIsHandled");
                fileDownloadHandler.WaitUntilDownloadCompleted(waitUntilDownload);
                "after: {0}".info("WaitUntilDownloadCompleted");
            }
            catch (Exception ex)
            {
                "[WatiN_IE][open_and_HandleFileDownload] {0}".error(ex.Message);
            }

            if (fileDownloadHandler.SaveAsFilename.fileExists())
            {
                "[WatiN_IE] downloaded ok '{0}' into '{1}'".info(url, fileDownloadHandler.SaveAsFilename);
                watinIe.IE.RemoveDialogHandler(fileDownloadHandler);
                return(fileDownloadHandler.SaveAsFilename);
            }
            "[WatiN_IE] failed to download '{0}' ".info(url);
            return(null);
        }