无法下载PDF';它使用的是Selenium/Python3.x,但是当我手动操作时,它可以工作

无法下载PDF';它使用的是Selenium/Python3.x,但是当我手动操作时,它可以工作,pdf,selenium-webdriver,automated-tests,geckodriver,pypdf2,Pdf,Selenium Webdriver,Automated Tests,Geckodriver,Pypdf2,我读了很多关于我这个问题的答案,但没有找到任何具体的答案。所以在这里问 下面是一个场景,在一个网页上,当我点击一个下载按钮时,它会正确下载一个PDF文件。在浏览器上,我设置了Firefox首选项来保存文件,而不是在预览中打开 然而,当我运行selenium/Python脚本时,下载会在预览中打开,页面上还有其他PDF下载,它们工作正常。检查两个下载按钮后,我看到的唯一区别是,未下载的按钮在其href值中有一个相对URL 我还在脚本中使用以下firefox选项设置,但没有任何帮助。请给我指引正确的

我读了很多关于我这个问题的答案,但没有找到任何具体的答案。所以在这里问

下面是一个场景,在一个网页上,当我点击一个下载按钮时,它会正确下载一个PDF文件。在浏览器上,我设置了Firefox首选项来保存文件,而不是在预览中打开

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

我还在脚本中使用以下firefox选项设置,但没有任何帮助。请给我指引正确的方向。提前谢谢

**************************
我也遇到了同样的问题-禁用pdfjs的设置只有在手动单击about:config页面时才起作用。事实证明,似乎解决了这个问题的是(Firefox 60.6.1ESR):

profile.setPreference(“pdfjs.disabled”,true);

profile.setPreference(“pdfjs.enabledCache.state”,false);//尝试将“application/octet stream”添加到“neverAsk.saveToDisk”和这两个选项“browser.helperApps.alwaysAsk.force”,假“browser.download.manager.useWindow”,假谢谢,@expern0-仍然相同,添加这些选项无助于它们。您能否确认文件是否已下载到提供的文件夹中,同时在env path中为windows设置geckodriver for linux/usr/bin,并在不向firefox类添加可执行路径的情况下重试。迄今为止,我在Mac上将geckodriver移动到/usr/bin,在脚本中将geckodriver路径更新为/usr/bin,然后再次运行它-仍然没有下载:-(各位,还有其他人有这个问题吗?请告诉我
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")
profile.setPreference("pdfjs.disabled", true);
profile.setPreference("pdfjs.enabledCache.state", false); // <= THIS