我正在使用WatiN库在部署后在网站上进行快速烟雾测试.除此之外,我想确保当我点击页面上的特定链接时,在浏览器中打开PDF.单击该链接很简单,但如何检测是否在浏览器窗口中成功打开了Acrobat Reader?我想捕捉404,服务器错误或超时等情况......
擦,
我在这个问题上找到了一个错误报告和一个功能请求.错误和功能请求都已关闭,但我仍然无法附加到托管PDF文档的IE窗口.
事实上,托管PDF文件的窗口甚至不是IE.InternetExplorers()或InternetExplorersNoWait()集合中的项目.
我在Windows XP上使用WatiN 2.0.10.928和IE7.
我的解决方案是使用添加COM引用到Interop.ShDocVw.dll并自己检查窗口,因为托管PDF查看器的IE窗口由于某种原因不是WatiN.IE.InternetExplorers()集合中的项目.
不要使用添加引用 - > COM - > Microsoft Internet Controls v1.1添加对Interop.ShDocVw.dll的引用.如果你这样做,你很有可能会收到这个例外:
System.IO.FileLoadException:无法加载文件或程序集'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral ...或其中一个依赖项.定位程序集的清单定义与程序集引用不匹配(来自HRESULT的异常:0x80131040)
相反,您需要引用随WatiN分发的ShDocVw.dll.查看'WatiN Error无法加载程序集'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." );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2306 次 |
| 最近记录: |