WatiN решение для исключения безопасности? - PullRequest
0 голосов
/ 30 января 2011

Я использую 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 Ответ

1 голос
/ 30 января 2011

Я считаю, что это должно что-то делать с настройками IE Security

Перейти на вкладку «Безопасность» -> Выбрать нужную зону (Интернет / Локальная / и т. Д.) -> Нажать кнопку уровня обычного пользователя -> Включить (Сценарии -> Разрешитьдоступ к программному буферу обмена)

...