Может ли Selenium проверять текст внутри PDF, загруженного браузером?

Мое веб-приложение загружает PDF в браузер. Я выяснил, как проверить правильность загрузки pdf файла, используя:

verifyAttribute =//XPath встраивать /@SRC {URL-адрес PDF идет здесь}

Было бы очень приятно проверить содержимое PDF с помощью Selenium - например, проверить, что какой-то текст присутствует. Есть какой-либо способ сделать это?

Ответы

Ответ 1

Пока я не поддерживался, я нашел пару способов с помощью 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, а затем преобразование PDF в текст с помощью PDFBox, см. http://www.prasannatech.net/2009/01/convert-pdf-text-parser-java-api-pdfbox.html для пример о том, как это сделать.

Ответ 2

Вы не можете сделать это с помощью WebDriver изначально. Однако API PDFBox можно использовать здесь для чтения содержимого PDF файла. Вам нужно прежде всего перенести фокус на окно браузера, где открывается файл PDF. Затем вы можете разобрать все содержимое файла PDF и найти нужную текстовую строку.

Здесь - это код для использования API PDFBox для поиска в документе PDF.

Ответ 3

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;

public class pdfToTextConverter {

public static void pdfToText(String path_to_PDF_file, String Path_to_output_text_file) throws FileNotFoundException, IOException{
     //Parse text from a PDF into a string variable
     File f = new File("path_to_PDF_file");

     PDFParser parser = new PDFParser(new FileInputStream(f));
     parser.parse();

     COSDocument cosDoc = parser.getDocument();
     PDDocument pdDoc = new PDDocument(cosDoc);

     PDFTextStripper pdfStripper = new PDFTextStripper();
     String parsedText = pdfStripper.getText(pdDoc);

     System.out.println(parsedText);

     //Write parsed text into a file
     PrintWriter pw = new PrintWriter("Path_to_output_text_file");
     pw.print(parsedText);
     pw.close(); 

}

}


JAR Source
http://sourceforge.net/projects/pdfbox/files/latest/download?source=files

Ответ 4

К сожалению, вы не можете сделать это вообще с Selenium

Ответ 5

вы можете использовать Selenium Web Driver и Google Match и Diff project для чтения pdf-контента в селене и сравнения.

Прочитайте статью здесь.