Как читать содержимое PDF в селене

Я пытаюсь проверить содержимое в PDF, я получаю URL-адрес с помощью href и передаю его в приведенном ниже коде. URL-адрес с HTTPS, поэтому я столкнулся с проблемой ниже. Может ли кто-нибудь помочь мне, как действовать, и помочь мне прочитать данные в формате PDF. заранее спасибо

Повторный URL-адрес: https://XXXXXXXXXXXXXXXXX/apex/DA_ViewArchive?docType=pdf&docid=2229123< /а>

        URL PDFUrl = new URL(url);
        BufferedInputStream TestFile = new BufferedInputStream(PDFUrl.openStream());
        PDFParser TestPDF = new PDFParser((RandomAccessRead) TestFile);
        TestPDF.parse();
        String TestText = new PDFTextStripper().getText(TestPDF.getPDDocument());
        System.out.println("Document Text is   "+   TestText);

ошибка

java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
    at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)

person Deepak_Mahalingam    schedule 11.03.2020    source источник
comment
Я нашел аналогичную проблему в этом stackoverflow.com/questions/4784825/ Надеюсь, это поможет..   -  person SeleniumTech    schedule 11.03.2020


Ответы (3)


Вы устанавливаете сертификаты Accept SSL в желаемых возможностях драйвера?

DesiredCapabilities dc = DesiredCapabilities.chrome ()       
dc.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true)
WebDriver driver = new ChromeDriver (dc);
person rrgirish    schedule 11.03.2020
comment
Привет @rrgirish, я им не пользуюсь. - person Deepak_Mahalingam; 11.03.2020
comment
Ваша трассировка стека показывает исключение SSL, вам нужно будет установить сертификаты SSL в вашем веб-драйвере, приведенный выше код предназначен для chrome. В этой статье, кажется, есть весь код для других браузеров guru99.com/ssl -certificate-error-handling-selenium.html - person rrgirish; 11.03.2020
comment
Не знаю, полезно ли это, но моя первая мысль - нужны ли настройки прокси (корпоративная среда?) - person Tilman Hausherr; 28.03.2020

Сначала загрузите pdfbox JAR 2.0.13 со всеми зависимостями и импортируйте его. Теперь прочитайте файл PDF с URL-адреса.

public String readPDFInURL(String text) throws EmptyFileException, IOException {
        System.out.println("Enters into READ PDF");
        String output = "";
        URL url = new URL(driver.getCurrentUrl());
        System.out.println("url :  " + url);
        InputStream is = url.openStream();
        BufferedInputStream fileToParse = new BufferedInputStream(is);
        PDDocument document = null;
        try {
            document = PDDocument.load(fileToParse);
            output = new PDFTextStripper().getText(document);
            if (output.contains(text)) {
                System.out.println("Element is matched in PDF is : " + text);
                test.log(LogStatus.INFO, "Element is displayed in PDF " + text);
            } else {
                System.out.println("Element is not  matched in PDF");
                test.log(LogStatus.ERROR, "Element is not displayed in PDF :: " + text);
                throw new AssertionError("Element is not displayed" + text);
            }
        } finally {
            if (document != null) {
                document.close();
            }
            fileToParse.close();
            is.close();
        }
        return output;
    }
person Jagrut    schedule 12.03.2020
comment
Этот ответ бесполезен, у OP есть проблема со связью (тайм-аут), которую вы не пытаетесь решить. И не используйте 2.0.13. Текущая версия 2.0.19. - person Tilman Hausherr; 28.03.2020

Вы можете добавить зависимость pdfbox jar с помощью Maven и начать чтение PDF-файла, загруженного с помощью Selenium или существующего PDF-документа.

Например:

  File file = new File("C:/PdfBox_Examples/new.pdf");
  PDDocument document = PDDocument.load(file);

  //Instantiate PDFTextStripper class
  PDFTextStripper pdfStripper = new PDFTextStripper();

  //Retrieving text from PDF document
  String text = pdfStripper.getText(document);
  System.out.println(text);

  //Closing the document
  document.close();
person Bala M    schedule 19.03.2020
comment
Этот ответ бесполезен, у OP есть проблема со связью (тайм-аут), которую вы не пытаетесь решить. - person Tilman Hausherr; 28.03.2020