2011-01-30 2 views
0

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

나는 그것이 IE 보안 설정으로 뭔가를 가지고 있다고 생각

고토 보안 탭 -> 적절한 구역 (인터넷/지역/등) 선택 -> 커스텀 레벨 버튼 클릭 -> 사용 (스크립팅 -> 프로그래밍 방식의 클립 보드 액세스 허용)

+0

감사합니다. 코드 사용을 피할 수 있는지 궁금합니다. – kakopappa