Загрузка PDF с использованием Selenium, Chrome и Python - PullRequest
0 голосов
/ 01 января 2019

Я пытался следовать предыдущим сообщениям на эту тему, таким как эти ( сообщение 1 , сообщение 2 ), но я все еще застрял.

Мой сценарий должен войти на сайт с использованием набора учетных данных, а затем перемещаться по некоторым раскрывающимся меню для выбора отчета.После выбора отчета появляется новое окно, в котором необходимо настроить параметры для создания отчета.После того, как параметры заданы, то же всплывающее окно обновляется с созданным отчетом в формате PDF и отображается с помощью встроенного в Chrome средства просмотра PDF.У меня сложилось впечатление, что передача определенных параметров веб-драйверу отключит эту программу просмотра PDF и просто загрузит файл, но программа просмотра PDF по-прежнему отображается и автоматически ничего не загружается.Конечно, я что-то упустил или я написал что-то неправильно.Вот код моего кода:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option('prefs',  {
    "download.default_directory": download_dir,
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "plugins.plugins_disabled": ["Chrome PDF Viewer"]
    }
)

browser = webdriver.Chrome(options = chrome_options)

driver = webdriver.Chrome()
driver.get(url)

#In between here are a bunch of steps here that navigates through drop down menus

#This step may not be necessary, but I figured I'd include it to address when the pop up window refreshes and displays the report in PDF format through Chrome's PDF viewer
driver.switch_to.window(driver.window_handles[1])

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

Использование Selenium версии 3.141.0, Python 3.6.4, веб-драйвера Chrome 2.45 в Windows 10.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

У меня была похожая проблема, которую я решил с помощью драйвера firefox на Java.Вот мой код:

ffprofile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
ffprofile.setPreference("browser.download.folderList", 2);
ffprofile.setPreference("browser.download.manager.showWhenStarting", false);
ffprofile.setPreference("browser.download.dir", "path/to/directory");
ffprofile.setPreference("plugin.scan.plid.all",false);
ffprofile.setPreference("plugin.scan.Acrobat","99.0");
ffprofile.setPreference("pdfjs.disabled",true);

Может быть, для вас это вариант использования Firefox, и перевод Java-> Python должен быть простым.

0 голосов
/ 02 января 2019

Вам нужно заменить "plugins.plugins_disabled": ["Chrome PDF Viewer"]

на:

"plugins.always_open_pdf_externally": True

Надеюсь, это вам поможет!

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