【发布时间】:2019-12-12 23:00:51
【问题描述】:
我正在自动化我的测试场景以验证 pdf 文档。单击文档链接(锚标记)后,该文档将在新的浏览器选项卡中打开。我想验证我正在使用 Apache PDFBox 的文档中的一些重要内容。但是,文档 URL 有一个前缀“blob”,因此 java.net.URL 类为未知协议抛出 MalformedException:blob。我应该如何在 java 中定义/添加该协议?
请告诉我如何消除此错误,以便我可以成功使用 PDFBox 解析我的 pdf 文件。
Java 版本 - 1.8
这是文档的 HTML 源代码。但是,由于它是 pdf 视图,因此无法执行任何操作,例如获取文本/窗口标题等。
以下是示例代码 sn -p -
public void readPdfContents() throws IOException {
String url = "blob:https://cpswebqa.testcbidata.com/f9ad63bc-700e-4f49-a4fb-807ad1a44b01";
URL pdfUrl = new URL(url);
InputStream ips = pdfUrl.openStream();
BufferedInputStream bis = new BufferedInputStream(ips);
PDFParser pdfParser = new PDFParser(bis);
pdfParser.parse();
String pdfData = new PDFTextStripper().getText(pdfParser.getPDDocument());
System.out.println("PDF Data is - " + pdfData);
}
错误堆栈跟踪 -
Exception in thread "main" java.net.MalformedURLException: unknown protocol: blob
at java.net.URL.<init>(URL.java:600)
at java.net.URL.<init>(URL.java:490)
at java.net.URL.<init>(URL.java:439)
at com.cbsh.automation.file.testrunner.WEB.Sample.main(Sample.java:11)
【问题讨论】:
-
使用相关的 HTML、代码试验和完整的错误堆栈跟踪更新问题。
-
@DebanjanB 添加了示例代码、屏幕截图和错误堆栈。如果有用请告诉我
-
您是否尝试过从 URL 中删除
blob:前缀? -
@VGR - 我以前试过。但是,如果我删除前缀,它不会认为它是所需文档的有效 url。即我无法访问没有前缀的文档并且它抛出 IOException 说文件结束。
-
那么这意味着那里的文件是空的,或者这个 URL 可能只是某个数据库的键?您可以从浏览器访问这些 URL 吗?
标签: java selenium url automation pdf-parsing