Python 2.7 + Selenium 3.8 + Firefox 57 + MacOS Sierra:设置“browser.helperApps.neverAsk.openFile”后仍然出现下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7 + Selenium 3.8 + Firefox 57 + MacOS Sierra:设置“browser.helperApps.neverAsk.openFile”后仍然出现下相关的知识,希望对你有一定的参考价值。

我使用Selenium 3.8,Firefox 57和Python 2.7从网页下载PDF文件时遇到困难。如果我没有手动将Firefox配置文件下载设置从“始终询问您保存文件的位置”更改到特定位置,则仍会显示下载弹出框,并且文件不会自动下载到指定文件夹。

我查了this StackO帖子,我不确定我错过了什么。我是否需要安装和设置木偶?我确实已经设置了geckodriver可执行文件。

这是我的代码:

profile = webdriver.FirefoxProfile("/Users/USERNAME/Library/Application Support/Firefox/Profiles/NAME")
profile.set_preference('browser.download.folderList', 2) # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference("browser.helperApps.neverAsk.openFile", 'application/pdf')
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf')
profile.set_preference('browser.download.dir', download_to_location)
browser = webdriver.Firefox(profile)
download_to_location = "PATH_TO_FOLDER_WITHIN_DIRECTORY"

for race in races:
        browser.get(race)
        try:
            [browser.find_element_by_xpath(lxp).click() for lxp in download_from_xpaths]
        except: 
            pass

屏幕截图:enter image description here

答案

要自动将PDF文件下载到指定的文件夹,您可以使用以下代码块:

newpath = "PATH_TO_FOLDER_WITHIN_DIRECTORY"
if not os.path.exists(newpath):
    os.makedirs(newpath) 
profile = webdriver.FirefoxProfile("/Users/USERNAME/Library/Application Support/Firefox/Profiles/NAME")
profile.set_preference("browser.download.dir",newpath);
profile.set_preference("browser.download.folderList",2);
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain,application/octet-stream,application/pdf,application/x-pdf,application/vnd.pdf");
profile.set_preference("browser.download.manager.showWhenStarting",False);
profile.set_preference("browser.helperApps.neverAsk.openFile","text/plain,application/octet-stream,application/pdf,application/x-pdf,application/vnd.pdf");
profile.set_preference("browser.helperApps.alwaysAsk.force", False);
profile.set_preference("browser.download.manager.useWindow", False);
profile.set_preference("browser.download.manager.focusWhenStarting", False);
profile.set_preference("browser.helperApps.neverAsk.openFile", "");
profile.set_preference("browser.download.manager.alertOnEXEOpen", False);
profile.set_preference("browser.download.manager.showAlertOnComplete", False);
profile.set_preference("browser.download.manager.closeWhenDone", True);
profile.set_preference("pdfjs.disabled", True);
browser = webdriver.Firefox(profile)
browser.get('Provide_URL_here')

以上是关于Python 2.7 + Selenium 3.8 + Firefox 57 + MacOS Sierra:设置“browser.helperApps.neverAsk.openFile”后仍然出现下的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过 Chromedriver 2.34、Selenium 3.8 和 Python 3.6.2 登录富国银行时出错

selenium+python自动化之环境安装

dockerCentOS6.8+Python2.7+selenium+Firefox的搭建

python下载及安装步骤

python下载及安装步骤

python+selenium环境搭建