私の Web アプリケーションは、ブラウザに PDF を読み込みます。次を使用して、pdfが正しくロードされたことを確認する方法を見つけました。
verifyAttribute xpath=//embed/@src {ここに PDF の URL が入ります}
Selenium を使用して PDF の内容を確認できると非常に便利です。たとえば、テキストが存在することを確認します。これを行う方法はありますか?
私の Web アプリケーションは、ブラウザに PDF を読み込みます。次を使用して、pdfが正しくロードされたことを確認する方法を見つけました。
verifyAttribute xpath=//embed/@src {ここに PDF の URL が入ります}
Selenium を使用して PDF の内容を確認できると非常に便利です。たとえば、テキストが存在することを確認します。これを行う方法はありますか?
ネイティブではサポートされていませんが、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"));
}
もう1つの方法は、まだJavaで、PDFをダウンロードしてから、PDFBoxを使用してPDFをテキストに変換することです。http: //www.prasannatech.net/2009/01/convert-pdf-text-parser-java-api-pdfboxを参照してください。これを行う方法の例については、.htmlを参照してください。
WebDriver をネイティブに使用してこれを行うことはできません。ただし、ここで PDFBox API を使用して PDF ファイルのコンテンツを読み取ることができます。まず、PDF ファイルが開かれているブラウザ ウィンドウにフォーカスを移動する必要があります。次に、PDF ファイルのすべてのコンテンツを解析し、目的のテキスト文字列を検索できます。
PDFBox APIを使用してPDFドキュメント内を検索するコードは次のとおりです。
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
Unfortunately you can not do this at all with Selenium