WatiN安全异常解决方案?

时间:2011-01-30 15:57:46

标签: c# watin

我正在使用Watin将图像复制到剪贴板,当我这样做时,我收到了这个错误,

是否有使用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;
        }

谢谢!

安全例外的图像:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为它必须对IE安全设置做些什么

转到 安全选项卡 - >选择适当的区域(互联网/本地/等) - >点击Custome Level按钮 - >启用(脚本 - >允许编程剪贴板访问)

相关问题