web-dev-qa-db-ja.com

SeleniumはブラウザによってロードされたPDF内のテキストを検証できますか?

私のWebアプリケーションはブラウザにPDFをロードします。以下を使用して、PDFが正しくロードされたことを確認する方法を理解しました。

verifyAttribute xpath = // embed/@ src {URL PDFここに移動}

Seleniumを使用してPDFの内容を確認できると、本当に便利です。たとえば、テキストが存在することを確認します。これを行う方法はありますか?

16
Daniel Alexiuc

ネイティブではサポートされていませんが、Javaドライバーを使用するいくつかの方法を見つけました。1つの方法は、ブラウザーで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 これを行う方法の例。

19
AlexS
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
1
rk498r

WebDriverをネイティブに使用してこれを行うことはできません。ただし、ここではPDFBox APIを使用して、PDFファイルのコンテンツを読み取ることができます。まず、PDFファイルが存在するブラウザウィンドウにフォーカスを移動する必要があります次に、PDFファイルのすべてのコンテンツを解析し、目的のテキスト文字列を検索できます。

Here は、PDFBoxAPIを使用してPDFドキュメント内を検索するためのコードです。

1
Maharshi

selenium WebDriverとGoogleMatch and Diffプロジェクトを使用して、SeleniumのPDFコンテンツを読み取り、比較することができます。

ここの記事を読んでください。

0
Selenium Guru

残念ながら、Seleniumではこれをまったく行うことができません

0
AutomatedTester