gpt4 book ai didi

pdf - 如何使用 WatiN 在浏览器中检查 PDF 是否已成功打开?

转载 作者:行者123 更新时间:2023-12-05 00:43:18 25 4
gpt4 key购买 nike

我正在使用 WatiN 库在部署后在网站上进行快速烟雾测试。除其他事项外,我想确保当我单击页面上的特定链接时,会在浏览器中打开 PDF。单击链接很容易,但如何检测 Acrobat Reader 是否已在浏览器窗口中成功打开?我想捕捉 404、服务器错误或超时等情况...

最佳答案

擦,

我在此问题上找到了一份错误报告和一项功能请求。错误和功能请求都已关闭,但我仍然无法附加到托管 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 的引用。如果你这样做,你很有可能会收到这个异常(exception):

System.IO.FileLoadException: Could not load file or assembly 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral ... or one of its dependencies. The located assembly's manifest definition does not match the assembly reference (Exception from HRESULT: 0x80131040)



相反,您需要引用随 WatiN 分发的 ShDocVw.dll。查看“WatiN 错误无法加载程序集” StackOverflow 问题以获取更多信息:
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." );
}

关于pdf - 如何使用 WatiN 在浏览器中检查 PDF 是否已成功打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1191897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com