我正在使用 WatiN 库在部署后对网站进行快速冒烟测试。除此之外,我想确保当我单击页面上的特定链接时,会在浏览器中打开 PDF。单击链接很容易,但如何检测 Acrobat Reader 是否已在浏览器窗口中成功打开?我想捕获 404、服务器错误或超时等情况...
Rub,
我发现了关于此问题的一份错误报告和一项功能请求。 Bug 和功能请求均已关闭,但我仍然无法附加到托管 PDF 文档的 IE 窗口。
事实上,托管 PDF 文件的窗口甚至不是 IE.InternetExplorers() 或 InternetExplorersNoWait() 集合中的项目。
我在 Windows XP 上使用 WatiN 2.0.10.928 和 IE7。
我的解决方案的方法是添加对 Interop.ShDocVw.dll 的 COM 引用并自行检查窗口,因为出于某种原因,托管 PDF 查看器的 IE 窗口不是 WatiN.IE.InternetExplorers() 集合中的项目。
不要使用添加引用 -> COM -> Microsoft Internet Controls v1.1 添加对 Interop.ShDocVw.dll 的引用。如果您这样做,您很有可能会收到此异常:
System.IO.FileLoadException:无法加载文件或程序集“Interop.SHDocVw,版本= 1.1.0.0,文化=中性...或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配(HRESULT 异常:0x80131040)
相反,您需要引用随 WatiN 分发的 ShDocVw.dll。查看“WatiN 错误无法加载程序集”StackOverflow 问题以获取更多信息:WatiN 错误无法加载程序集
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." );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)