无法使用Selenium / Python 3.x下载PDF,但是当我手动执行时它可以工作

时间:2018-10-18 15:11:29

标签: pdf selenium-webdriver automated-tests geckodriver pypdf2

我仔细阅读了有关此查询的大量答案,但找不到任何具体内容。因此在这里问

在这种情况下,在网页上,当我单击下载按钮时,它将正确下载PDF文件。在浏览器上,我将Firefox首选项设置为保存文件,而不是在预览中打开。

但是,当我运行selenium / Python脚本时,下载会一直在预览中打开,页面上还有其他PDF下载,它们可以正常工作。在检查了两个下载按钮后,我看到的唯一区别是未下载的按钮的href值具有相对URL。

我还在脚本中使用了以下firefox选项设置,但没有帮助。请指引我正确的方向。预先感谢!

**************************

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir", 'Path to Save The file')
fp.set_preference("pdfjs.enabledCache.state", False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
fp.set_preference("pdfjs.disabled", "true")

# disable Adobe Acrobat PDF preview plugin
fp.set_preference("plugin.scan.plid.all", "false")
fp.set_preference("plugin.scan.Acrobat", "99.0")
self.driver = webdriver.Firefox(firefox_profile=fp,executable_path="path to my geckodriver")
self.driver.get("url")

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题-禁用pdfjs的设置仅在about:config页面上手动单击时有效。原来,似乎已解决了该问题的是(Firefox 60.6.1ESR):

profile.setPreference("pdfjs.disabled", true);
profile.setPreference("pdfjs.enabledCache.state", false); // <= THIS