firefox - Selenium 可以验证浏览器加载的 PDF 中的文本吗?

标签 firefox testing pdf selenium selenium-ide

我的 Web 应用程序在浏览器中加载 pdf。我已经想出如何使用以下方法检查 pdf 是否已正确加载:

验证属性 xpath=//嵌入/@src {PDF 的 URL 在这里}

如果能够使用 Selenium 检查 pdf 的内容,那就太好了——例如验证是否存在某些文本。有什么办法吗?

最佳答案

虽然没有原生支持,但我找到了几种使用 java 驱动程序的方法。一种方法是在浏览器中打开 pdf(安装了 adobe acrobat),然后使用键盘快捷键选择所有文本(CTRL+A),然后将其复制到剪贴板(CTRL+C),然后您可以验证剪贴板中的文本。例如:

protected String getLastWindow() {
    return session().getEval("var windowId; for(var x in selenium.browserbot.openedWindows ){windowId=x;} ");
}

@Test
public void testTextInPDF() {
    session().click("link=View PDF");
    String popupName = getLastWindow();
    session().waitForPopUp(popupName, PAGE_LOAD_TIMEOUT);
    session().selectWindow(popupName);

    session().windowMaximize();
    session().windowFocus();
    Thread.sleep(3000);

    session().keyDownNative("17"); // Stands for CTRL key
    session().keyPressNative("65"); // Stands for A "ascii code for A"
    session().keyUpNative("17"); //Releases CTRL key
    Thread.sleep(1000);

    session().keyDownNative("17"); // Stands for CTRL key
    session().keyPressNative("67"); // Stands for C "ascii code for C"
    session().keyUpNative("17"); //Releases CTRL key

    TextTransfer textTransfer = new TextTransfer();
    assertTrue(textTransfer.getClipboardContents().contains("Some text in my pdf"));
}

另一种方法,仍然在 java 中,是下载 pdf,然后使用 PDFBox 将 pdf 转换为文本,参见 http://www.prasannatech.net/2009/01/convert-pdf-text-parser-java-api-pdfbox.html有关如何执行此操作的示例。

关于firefox - Selenium 可以验证浏览器加载的 PDF 中的文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563147/

相关文章:

css - Firefox 或 Internet Explorer 中不显示关键帧中的背景图像

javascript - 使用带有 Firefox 插件的 javascript 切换全屏模式

javascript - 在 Firefox 中导出 Highcharts 时出现黑色图像错误

javascript - Chrome 与 Firefox 中的 Javascript 日期不正确

ios - UIGraphicsGetCurrentContext 似乎返回 nil

android - 安卓变异测试工具

c# - 为什么我的 Entity Framework 测试失败了?

android - 在设备上测试 Android 应用

macos - 如何使用命令行将 PDF 中的一系列页面提取到单个文件中?

xml - 如何使用 perl 将 ZUGFeRD-XML 附加到 PDF?