-->

如何检查是否PDF在使用华廷浏览器中打开成功?(How to check if PDF was su

2019-06-26 23:53发布

我使用的华廷库做部署后网站的快速烟雾测试。 别的不说,我要确保,当我点击我的页面上的特定链接,一个PDF在浏览器中打开。 点击链接很容易,但我怎么能检测是否使用Acrobat Reader是在浏览器窗口中打开成功? 我想赶上像404的情况下,服务器错误或超时...

Answer 1:

擦,

我发现一个bug报告,并在这个问题上一个功能请求。 这两个错误和功能要求被关闭,但我仍然无法连接到承载一个PDF文档的IE窗口。

其实承载了PDF文件的窗口是不是即使在IE.InternetExplorers()或InternetExplorersNoWait()集合的一个项目。

我使用Windows XP华廷2.0.10.928和IE7。

我的解决办法 ,因为IE窗口主机PDF浏览器是不是出于某种原因在WatiN.IE.InternetExplorers项目()集合使用COM引用添加到Interop.ShDocVw.dll并检查窗口自己。

> COM - - > Microsoft Internet控制V1.1不要使用添加引用添加引用Interop.ShDocVw.dll。 如果你那里有一个很好的机会,你会收到这个异常:

System.IO.FileLoadException:无法加载文件或程序集“Interop.SHDocVw,版本= 1.1.0.0,文化=中性...或者它的一个依赖。 所定位的组件的清单定义不匹配的组件参考(从HRESULT异常:0x80131040)

相反,你需要引用与华廷分布在shdocvw.dll中,多数民众赞成。 退房“华廷错误无法加载组件” StackOverflow的问题更多信息: 华廷错误无法加载组件

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." ); 
}


Answer 2:

谢谢你,莫莫,对于这个答案。 这是对我来说非常有帮助。

我只是想给以防万一附加解决这个答案谁都跑进我做了同样的问题。

我最初收到执行这一行的错误:

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

“SHDocVw.ShellWindowsClass无法嵌入,使用适用的接口,而不是”

该解决方案可以在这里找到: http://www.debugging.com/bug/24258

您需要右键单击参考Interop.ShDocVW.dll并设置嵌入互操作类型为false。



文章来源: How to check if PDF was successfully opened in the browser using WatiN?
标签: pdf watin