Chrome / Firefox открывает PDF в новой вкладке и не сохраняет его в автономном режиме (Selenium + Python) - PullRequest
1 голос
/ 30 мая 2019

У меня проблема с безголовым хромом при выполнении теста: файл PDF открывается при нажатии кнопки на новой вкладке.Если я запускаю тест в режиме без головы, все в порядке.Но когда попробуйте сделать то же самое в автономном режиме - файл не загружается.

options = ChromeOptions()
            options.add_argument('--no-sandbox')
            options.add_argument('--kiosk-printing')
            options.add_argument('--test-type')
            options.add_argument('--disable-infobars')
            options.add_argument('disable-gpu')
            options.add_argument('--verbose')
            options.add_argument('--disable-extensions')
            options.add_argument('--ignore-certificate-errors')
            options.add_experimental_option("prefs", {
                "profile.default_content_settings.popups": 0,
                "download.default_directory": dwnld_path,
                "download.prompt_for_download": False,
                "download.directory_upgrade": True,
                "safebrowsing.enabled": False,
                "plugins.always_open_pdf_externally": True,
                "plugins.plugins_disabled": ["Chrome PDF Viewer"]
            })

Я также обнаружил, что:

wd.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')

params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': dwnld_path}}
        command_result = wd.execute("send_command", params)

Но это помогает, только если я получаю запрос на загрузку вбезголовый режим, если файл не открывается в браузере.

1 Ответ

0 голосов
/ 30 мая 2019

Попробуйте сохранить URL-адрес файла PDF и загрузить его с библиотекой запросов, я думаю, что он будет работать.

Примерно так:

import urllib3
import PyPDF2
import certifi
import io

http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs=certifi.where())
pdf_url = "http:\\XXXXXX.pdf"
r3 = http.request('GET', pdf_url)
with io.BytesIO(r3.data) as open_pdf_file:
      read_pdf = PyPDF2.PdfFileReader(open_pdf_file)
      num_pages = read_pdf.getNumPages()

, а затем нам нужна вторая частькод, который вам нужен для сохранения pdf аналогичным образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...