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

2023-12-03

我正在使用 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(使用前将#替换为@)

如何使用 WatiN 检查 PDF 是否在浏览器中成功打开? 的相关文章

  • pdf文件文本阅读和搜索

    我想从 pdf 文件中读取文本并将文本搜索到 pdf 文件中 这是我知道的链接 这些都帮不了我 使用 Quartz 2D 解析 pdf 时获取文本位置 https stackoverflow com questions 3627745 ge
  • Linux:命令行实用程序将 RTF 转换为 PDF?

    有什么建议可以将 RTF 转换为 PDF 吗 我需要从 LAMP 应用程序执行此操作 因此像 GhostScript 这样的命令行实用程序将是理想的选择 或者 您可以使用 libreoffice 来完成此任务 libreoffice hea
  • 如何使用回形针对多页 pdf 进行缩略图

    我想让 Paperclip 为上传的多页 PDF 文件的每一页创建 2 个缩略图 我正在运行 Paperclip 2 3 1 1 并在我的资产模型中使用它 has attached file asset styles gt medium g
  • 如何使用 iTextSharp 设置 PDF 段落或字体行高?

    如何使用 iTextSharp 更改 PDF 字体或段落的行高 排版中的行距称为行距 如果可以使用行间距 则可以使用 Paragraph Leading 或 Paragraph LeadingMultiplier 看http itextsh
  • 为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

    Run 示例项目 https github com tvarghese TestWebView并观察桌面上生成的输出 PDF 名为保存网页 pdf 粘贴感兴趣的代码片段 NSURL url NSBundle mainBundle URLFo
  • 如何以编程方式生成在图像顶部带有标签的维恩图图像?

    我正在尝试为 pdf 报告生成维恩图 其中文本位于不同区域的顶部 我们使用 htmldoc 生成 pdf 这会排除背景图像之上的文本 我们使用谷歌图表 API 来处理其他图像 但他们的维恩图不支持图表顶部的文本 据我所知 最简单的路径是使用
  • Zend 框架 PDF 问题

    又是我 伙计们 我有一个小问题 Create new PDF pdf new Zend Pdf Add new page to the document page pdf gt newPage Zend Pdf Page SIZE A4 p
  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 在 Flash Player 10 中打开 pdf

    我需要在 Flash Player 10 中打开 PDF 该 swf 不会在浏览器中运行 并且系统上不会有 adobe reader 程序 我需要知道是否可以在 Flash 播放器中打开 PDF 而无需以任何方式进行转换 我在谷歌上搜索了无
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 在 Python 中静默打印 PDF

    我正在尝试使用 Python 打印 PDF 而不打开 PDF 查看器应用程序 Adobe Foxit 等 我还需要知道打印何时完成 以删除文件 Here http permalink gmane org gmane comp python
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • PyFPDF在指定大小时无法添加页面

    在 pyfpdf 文档上据说可以在添加页面时指定格式 fpdf add page orientation format same False 但在指定格式时它给了我一个错误 error pdf add page format 1000 10
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • FileReader 读取 PDF 时丢失数据

    我的限制是只能以 JSON 格式将数据发送到服务器 并且我需要将 PDF 文件与 JSON 中的其他表单数据一起发送 我虽然可以用 base64 从中创建一个字符串 如下所示这个解决方案 https stackoverflow com a
  • 将 PDFMaker 与 MS Outlook 结合使用

    我想将 Adob e PDFMaker 插件与 MS Outlook 2013 一起使用 使用 PDFMAKER 将多封电子邮件保存为 pdf https stackoverflow com questions 44723984 savin
  • Chrome 和 Firefox 不会在 iframe 中显示大多数 PDF 文档

    我运行的是 Windows 7 64 位 我最近更新了操作系统以安装最新更新 从那时起 大多数 PDF 文档已停止在我的程序中呈现 我的程序想要在单独的 iFrame 中显示 PDF 文档 我通过获取 PDF 文档的 URL 并设置来做到这
  • JsDoc 到 PDF 渲染器

    有人知道将 JsDoc 转换为 PDF 的工具吗 或者您必须通过将 HTML 文件转换为 PDF 来做到这一点 感谢您的回答 我所知道的 JSDoc 转换器是用 JavaScript 编写的 并且经过硬编码以生成 HTML 标签 我所知道的

随机推荐

  • 带有 LESS mixin 的“附加”属性值

    我正在寻找 LESS 中可能提供也可能不提供的功能 我有一个 mixin 它添加了带有框阴影的 发光 我在各种元素上使用它 按钮 输入等 glow box shadow 0 0 5px skyBlue 我正在寻找的是一种方法 如果元素已经有
  • 如何使用 PHP 7 安装 ext-curl 扩展?

    我已经使用安装了 PHP 7这个仓库 但是当我尝试跑步时composer install 它给出了这个错误 package 需要 ext curl gt 您的系统中缺少请求的 PHP 扩展curl 对于 PHP 5 您可以通过运行以下命令轻
  • 是否有任何解决方法可以使用最新的 Twitter REST API v1.1 获取 twitter 对话

    我正在开发一个项目 需要检索 Twitter 用户的对话 例如我想得到这条推文的所有回复英国广播公司世界服务台 使用休息 API v1 1我可以获得 Twitter 用户的时间线 推文 转发 但我没有找到任何有关获取特定推文回复的文档 工作
  • RxJS 等待 Promise 解决

    我仍在研究反应式编程 所以我很确定这是非常基础的 但是流转换的数量对于初学者来说是相当巨大的 我正在从 DOM 事件创建一个 Observable 此事件应依次触发 REST 调用 并且所有其他 DOM 事件将被忽略 直到此事件得到解决 c
  • 应用程序委托中全局变量的替代方案

    我正在开发一个带有速度计的应用程序 如动画 一个仪表和一个箭头来指示仪表上的某些内容 我将箭头的位置存储在应用程序委托中声明的全局变量中 我这样做是因为箭头位置已更新并由多个类使用 然而 我不确定这是一个好还是坏的设计决策 我的想法是 由于
  • Puppeteer 不会更改选择器

    我正在尝试自动执行查询数据的任务这个网站使用木偶师 因此 我需要选择数据集 每日摘要 第一个选项 然后选择位置类型 州 第三个选项 然后选择州 阿拉斯加 第二个选项 问题是我的代码没有更改为下一个表 因此 它不是在选择数据集中的第一个选项
  • python 函数中的调和平均值?

    我有两个函数可以给出精确度和召回率分数 我需要在使用这两个分数的同一库中定义一个调和平均函数 函数如下所示 这是函数 def precision ref hyp Calculates precision Args ref a list of
  • 从异步函数返回值node.js

    我知道这是 javascript 中关于函数异步行为最常见的问题 我仍然无法为我的用例找出可行的解决方案 我想做的是使用键查找 redis 缓存 我正在使用存在函数来检查密钥是否存在 如果存在 那么我将从缓存返回 如果不存在 那么我将设置该
  • Safari 媒体查询打印未正确使用 100% 高度

    我正在对一个应用程序使用打印媒体查询 该应用程序在 Chrome Edge Firefox 上运行良好 但在 Safari 上失败 我使用高度 100 是为了让它填充打印页面 在 safari 上它似乎使用百分比作为元素本身的百分比 我在下
  • 未处理的 Promise 拒绝:this._next 不是函数:@angular/fire/messaging 中的区域

    当我在前台收到 firebase 推送通知时 通过使用 angular fire messaging 方法是 this angularFireMessaging messages subscribe payload gt console l
  • 如何在 Javascript 中设置 cookie 在 1 小时后过期?

    如何设置此 cookie 在当前时间一小时后过期 document cookie username value expires WHAT GOES HERE path Code var now new Date var time now g
  • Socket.io android java客户端接收消息和发送文件示例

    有谁有任何示例代码演示如何在 java 客户端上接收 socket io 的消息 另外 是否有从同一个 socket io java 客户端发送文件 二进制 图片的示例 基本上是来自java而不是javascript客户端的示例代码 and
  • Datagrid wpf C# 应用程序中的复选框

    我正在使用数据网格为学生记录创建一个 C wpf 应用程序 如何在标题中创建复选框以选择 取消选择一行中的所有复选框 如何一键选中行中的复选框以便我们可以编辑 删除记录 我们如何选择多个复选框来删除 我创建了一种行为 允许将控件中的属性绑定
  • 如何在 tsql contains 函数中搜索 &(与号)?

    我有一个表 T 其中有一个列 C 其中包含包含字符 的文本 但是如果我执行以下查询 它不会返回任何内容 尽管我可能有 10 行 SELECT FROM T WHERE Contains C a b 使用双引号使其成为搜索词 SELECT F
  • 从 Asm 访问 C 中定义的全局变量

    我有一个包含全局变量 foo 的 C 文件 我如何访问foo来自另一个汇编程序 我使用 i586 elf as GNU 汇编器 和 i586 elf gcc gnu 编译器 进行构建 您可以只使用交易品种名称 as将所有未定义的符号视为外部
  • EF Core DB First,以及如何避免模型生成时的构造函数覆盖

    我将不再对 Azure DB 使用 SQL 身份验证 而是使用 Active Directory 托管身份验证 如此处所述article 基本上 我正在做两件主要的事情来使其正常工作 1 在 DBContext 构造函数中注入令牌 publ
  • 在 Azure 上部署 Django 应用程序:即使在部署后也仅显示默认应用程序

    我正在尝试将 Web 应用程序部署到 Azure 我正在遵循这些指示https azure microsoft com en us documentation articles web sites python create deploy
  • 通过类路径执行 java -jar vs 在 jar 文件目录中执行 java -jar

    使用 NetBeans 创建 Java 程序后 将其称为 Addition 然后在文件夹 c Users Ben Doc NetBeansProjects Addition dist 中成功清理并构建可执行 Jar 文件 为什么在执行时 从
  • 使用ajax时如何清除缓存数据?

    我正在使用 Ajax 根据某些 ID 从服务器检索数据 如下所示 以执行自动建议功能 但是 当我提交表单并更新数据库时 自动建议字段假设不应再包含此 ID 的任何内容 但它仍会从缓存中检索数据 有谁知道如何清除缓存并使Ajax发送请求以在每
  • 如何使用 WatiN 检查 PDF 是否在浏览器中成功打开?

    我正在使用 WatiN 库在部署后对网站进行快速冒烟测试 除此之外 我想确保当我单击页面上的特定链接时 会在浏览器中打开 PDF 单击链接很容易 但如何检测 Acrobat Reader 是否已在浏览器窗口中成功打开 我想捕获 404 服务