2009-07-28 1 views
4

私はWatiNライブラリを使用して、展開後にWebサイトで迅速な煙のテストを行っています。とりわけ、私は自分のページ上の特定のリンクをクリックすると、ブラウザにPDFが開かれていることを確認したい。リンクをクリックするのは簡単ですが、ブラウザウィンドウでAcrobat Readerが正常に開かれた場合はどうすれば検出できますか?私は404のような状況で、サーバーエラー、またはタイムアウトをキャッチしたいと思います...WatiNを使用してブラウザでPDFが正常に開かれたかどうかを確認する方法は?

答えて

6

こする、

私は1つのバグレポートやこの問題に関する一つの特徴リクエストを見つけました。バグと機能リクエストは閉じられていますが、PDFドキュメントをホストしているIEウィンドウにはまだ接続できません。

実際、PDFファイルをホストしているウィンドウは、IE.InternetExplorers()またはInternetExplorersNoWait()コレクションの項目でもありません。

Windows XPではWatiN 2.0.10.928とIE7を使用しています。

私のソリューションがInterop.ShDocVw.dllへのCOM参照を追加し、ホストPDFの視聴者が何らかの理由でWatiN.IE.InternetExplorers()コレクション内の項目ではないことをIEのウィンドウので、ウィンドウのために自分を確認し使用していました。

参照の追加 - > COM - > Microsoftインターネットコントロールv1.1を使用してInterop.ShDocVw.dllへの参照を追加しないでください。

System.IO.FileLoadException:あなたは良い機会をtheresの場合は、この例外受け取るよファイルまたはアセンブリをロードできませんでした「Interop.SHDocVw、バージョン= 1.1.0.0を、文化=中立...かその依存関係の1つ。配置されたアセンブリのマニフェスト定義がアセンブリ参照と一致しません(HRESULTの例外:0x80131040)

代わりにWatiNで配布されているShDocVw.dllを参照する必要があります。詳細は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

おかげで、モモを、この答えを。それは私にとっても非常に役に立ちました。

他の誰かが私と同じ問題に遭遇した場合に備えて、私はちょうどこの答えに追加の解決策を与えたいと思います。

私が最初にこのラインを実装し、エラーを受け取った:

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

"SHDocVw.ShellWindowsClassを埋め込むことができない、代わりに該当するインタフェースを使用"

ソリューションはここで見つけることができます: http://www.debugging.com/bug/24258

Interop.ShDocVW.dllの参照を右クリックし、埋め込みinteropの型をfalseに設定する必要があります。

関連する問題