如何使用selenium

时间:2016-11-22 09:41:02

标签: java pdf selenium-webdriver download pdf-reader

我正在网页上有一个链接,点击它在新窗口打开一个pdf文件。 我必须阅读该pdf文件,以根据已完成的事务验证一些数据。一种方法是下载该文件,然后使用它。 任何人都可以帮助我解决这个问题。我必须在IE 11上工作

先谢谢。

2 个答案:

答案 0 :(得分:4)

使用PDFBox和FontBox。

    public String readPDFInURL() throws EmptyFileException, IOException {
        WebDriver driver = new FirefoxDriver();
        // page with example pdf document
        driver.get("file:///C:/Users/admin/Downloads/dotnet_TheRaceforEmpires.pdf");
        URL url = new URL(driver.getCurrentUrl());
        InputStream is = url.openStream();
        BufferedInputStream fileToParse = new BufferedInputStream(is);
        PDDocument document = null;
        try {
            document = PDDocument.load(fileToParse);
            String output = new PDFTextStripper().getText(document);
        } finally {
            if (document != null) {
                document.close();
            }
            fileToParse.close();
            is.close();
        }
        return output;
    }

由于旧版PDFBox中的某些功能已被弃用,我们需要使用另一个FontBox和PDFBox。我使用了PDFBox (2.0.3)FontBox (2.0.3),它运行正常。但它不会读取图像。

答案 1 :(得分:0)

First Downlaod pdfbox jar。

strURL是一个包含.pdf文件的web URl: 像(https://example.com/downloads/presence/Online-Presence-CA-05-02-2017-04-13.pdf

public boolean verifyPDFContent(String strURL, String text) {

        String output ="";
        boolean flag = false;
        try{
            URL url = new URL(strURL);
            BufferedInputStream file = new BufferedInputStream(url.openStream());
            PDDocument document = null;
            try {
                document = PDDocument.load(file);
                output = new PDFTextStripper().getText(document);
                System.out.println(output);
            } finally {
                if (document != null) {
                    document.close();
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        if(output.contains(text)){
            flag =  true;
        }
        return flag;
    }