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

Dan*_*iuc 16 pdf testing firefox selenium selenium-ide

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

verifyAttribute xpath = // embed/@ src {PDF的URL到这里}

能够使用Selenium检查pdf的内容真的很好 - 例如验证是否存在某些文本.有没有办法做到这一点?

Ale*_*exS 19

虽然不是本机支持,但我发现了几种使用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"));
}
Run Code Online (Sandbox Code Playgroud)

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