WatiN security exception solution?

744 Views Asked by At

I am using Watin to copy a image to the clipboard, I am getting this error when I do so,

is there a work around to this using AlertDialogHandler?

 public System.Drawing.Image GetPicture(WatiN.Core.Image image, ref IE browser)
        {
            if (image == null || !image.Exists || string.IsNullOrEmpty(image.Src))
                return null;
            const string t_js =
                    @"var div = document.images[{0}];
                      div.contentEditable ='true';
                      var controlRange;
                      if(document.body.createControlRange)
                      {{
                           controlRange = document.body.createControlRange();
                           controlRange.addElement(div);
                           controlRange.execCommand('Copy');
                       }}
                       div.contentEditable = 'false';";

            var cnt = -1;
            foreach (var image1 in browser.Images)
            {
                cnt++;
                if (image1 != null && image1.Exists && !string.IsNullOrEmpty(image1.Src) && image1.Src.ToLower() == image.Src.ToLower())
                    break;
            }
            var script = string.Format(t_js, cnt);


            WatiN.Core.DialogHandlers.AlertDialogHandler alertDialogHandler = new WatiN.Core.DialogHandlers.AlertDialogHandler ();
            using (new WatiN.Core.DialogHandlers.UseDialogOnce(browser.DialogWatcher, alertDialogHandler ))
            {

                browser.RunScript(script); // Exception comes here !!


alertDialogHandler.WaitUntilExists();

                alertDialogHandler.OKButton.Click();

                browser.WaitForComplete();

            }



            var data = Clipboard.GetDataObject();
            if (data == null)
                return null;
            var q = data.GetFormats();
            q.ToString();
            var q2 = data.GetFormats(true);
            q2.ToString();
            if (data.GetDataPresent(DataFormats.Bitmap))
            {
                var img = data.GetData(DataFormats.Bitmap, true);
                return img as System.Drawing.Image;
            }
            if (data.GetDataPresent(DataFormats.Dib))
            {
                var img = data.GetData(DataFormats.Dib, true);
                return img as System.Drawing.Image;
            }
            if (data.GetDataPresent(DataFormats.EnhancedMetafile))
            {
                var img = data.GetData(DataFormats.EnhancedMetafile, true);
                return img as System.Drawing.Image;
            }
            if (data.GetDataPresent(DataFormats.MetafilePict))
            {
                var img = data.GetData(DataFormats.MetafilePict, true);
                return img as System.Drawing.Image;
            }
            if (data.GetDataPresent(DataFormats.Tiff))
            {
                var img = data.GetData(DataFormats.Tiff, true);
                return img as System.Drawing.Image;
            }
            if (data.GetDataPresent(DataFormats.Serializable))
            {
                var img = data.GetData(DataFormats.Serializable, true);
                return img as System.Drawing.Image;
            }
            return null;
        }

Thanks!

image of the security exception:

enter image description here

1

There are 1 best solutions below

1
On BEST ANSWER

I believe it has to do something with IE Security settings

Goto Security Tab -> Select proper zone (Internet/Local/etc) -> Click on Custome Level button -> Enable (Scripting - > Allow programmatic clipboard access)