Selenium能否验证浏览器加载的PDF内的文本? [英] Can Selenium verify text inside a PDF loaded by the browser?
问题描述
$ b $ verifyAttribute
xpath = / / embed / @ src
{URL PDF转到这里}
用Selenium检查pdf的内容真的很不错 - 例如验证一些文本是否存在。有没有办法做到这一点?
虽然不是本地支持的,但我发现了一些使用java驱动程序的方法。一种方法是在您的浏览器中打开pdf(安装Adobe Acrobat),然后使用键盘快捷键选择所有文本(CTRL + A),然后将其复制到剪贴板(CTRL + C),然后您可以验证文本在剪贴板中。例如:
protected String getLastWindow(){
return session()。getEval(var windowId; for x in selenium.browserbot.openedWindows){windowId = x;});
@Test
public void testTextInPDF(){$ b $ b 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); //代表CTRL键
session()。keyPressNative(65); //代表A的ascii代码
session()。keyUpNative(17); //释放CTRL键
Thread.sleep(1000);
session()。keyDownNative(17); //代表CTRL键
session()。keyPressNative(67); //代表Cascii代码C
session()。keyUpNative(17); //释放CTRL键
TextTransfer textTransfer = new TextTransfer();
assertTrue(textTransfer.getClipboardContents()。contains(Some some text in my pdf));
}
另一种方式,仍然在java中,下载pdf,然后转换PDF到PDFBox的文本,请参阅 http: //www.prasannatech.net/2009/01/convert-pdf-text-parser-java-api-pdfbox.html ,了解如何执行此操作的示例。
My web application loads a pdf in the browser. I have figured out how to check that the pdf has loaded correctly using:
verifyAttribute xpath=//embed/@src {URL of PDF goes here}
It would be really nice to be able to check the contents of the pdf with Selenium - for example verify that some text is present. Is there any way to do this?
While not natively supported, I have found a couple ways using the java driver. One way is to have the pdf open in your browser (having adobe acrobat installed) and then use keyboard shortcut keys to select all text (CTRL+A), then copy it to the clipboard (CTRL+C) and then you can verify the text in the clipboard. eg:
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"));
}
Another way, still in java, is to download the pdf and then convert the pdf to text with PDFBox, see http://www.prasannatech.net/2009/01/convert-pdf-text-parser-java-api-pdfbox.html for an example on how to do this.
这篇关于Selenium能否验证浏览器加载的PDF内的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!