2009-07-28 2 views
4

배포 후 웹 사이트에서 빠른 연기 테스트를하기 위해 WatiN 라이브러리를 사용하고 있습니다. 특히, 내 페이지에서 특정 링크를 클릭하면 PDF가 브라우저에서 열리도록하고 싶습니다. 링크를 클릭하는 것은 쉽지만 Acrobat Reader가 브라우저 창에서 성공적으로 열렸는지 어떻게 알 수 있습니까? 나는WatiN을 사용하여 브라우저에서 PDF가 성공적으로 열렸는지 확인하는 방법은 무엇입니까?

답변

6

문지름,

내가 한 버그 리포트와이 문제에 대한 하나 개의 기능 요청을 발견 ... 404 같은 상황, 서버 오류 또는 시간 초과를 잡을 싶습니다. 버그와 기능 요청은 모두 닫혀 있지만 PDF 문서를 호스팅하는 IE 윈도우에는 연결할 수 없습니다.

실제로 PDF 파일을 호스팅하는 창은 IE.InternetExplorers() 또는 InternetExplorersNoWait() 컬렉션의 항목조차 아닙니다.

Windows XP에서 WatiN 2.0.10.928 및 IE7을 사용하고 있습니다.

내 솔루션 어떤 이유로) (호스트 PDF 뷰어가 WatiN.IE.InternetExplorers의 항목 수없는 IE 창부터 수집을 자신을 Interop.shdocvw.dll을에 COM 참조를 추가하고 창을 확인 사용하는 것이 었습니다 .

참조 추가 -> COM -> Microsoft Internet Controls v1.1을 사용하여 Interop.ShDocVw.dll에 대한 참조를 추가하지 마십시오.

System.IO.FileLoadException : 당신이 할 좋은 기회를 프로그래머 경우이 예외를받을 수 있습니다 파일이나 어셈블리를로드 할 수 없습니다 'Interop.SHDocVw, 버전 = 1.1.0.0을, 문화 = 중립 ... 또는 그것의 의존성 중의 하나. 대신 당신이 WatiN와 함께 배포 먹으 렴 SHDOCVW.DLL를 참조 할 필요가

다음 위치 어셈블리의 매니페스트 정의 (0x80131040 HRESULT에서 예외) 어셈블리 참조와 일치하지 않습니다. 추가 정보를 원하시면 StackOverflow의 질문 '어셈블리를로드 할 수 없습니다 WatiN 오류'를 체크 아웃 : WatiN Error Could not Load Assembly

using System.IO; 
using SHDocVw; 

namespace PDF_SPIKE 
{ 
    class Program 
    [STAThread] 
    static void Main(string[] args) 
    { 
     SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); 

     string pdfViewerURL = "http://YourURL/document.pdf"; 
     bool pdfOpened = false; 
     string filename; 

     foreach (SHDocVw.InternetExplorer ie in shellWindows) 
     { 
      filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); 

      if (filename.Equals("iexplore") && ie.LocationURL.Equals(pdfViewerURL)) 
       pdfOpened = true; 
     } 

     if (pdfOpened) 
      Console.WriteLine("Your PDF file is OPENED"); 
     else 
      Console.WriteLine("Your PDF file was NOT found."); 
} 
0

감사합니다, 모모,이 대답. 그것은 나에게도 매우 도움이되었습니다.

다른 사람들이 내가 한 것과 동일한 문제가 발생하는 경우를 대비하여이 답변에 대한 추가 솔루션을 제공하고 싶습니다. http://www.debugging.com/bug/24258

:

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); 

이 솔루션은 여기에서 찾을 수 있습니다 "SHDocVw.ShellWindowsClass가 내장 될 수없고, 대신에 해당하는 인터페이스를 사용하여"

나는 처음에이 줄을 구현하는 오류가 발생했습니다 Interop.ShDocVW.dll 참조를 마우스 오른쪽 단추로 클릭하고 포함 interop 형식을 false로 설정해야합니다.

관련 문제