首页 > 解决方案 > 在 python 中使用 Selenium 在 Headless chrome 中下载文件时文件未保存

问题描述

我能够以正常的 chrome 模式下载文件。其中,我无法看到使用 selenium python 在无头 chrome 中发生的下载。

我希望它不会保存下载的文件

尝试了互联网上许多用户提供的解决方案,但没有一个有效

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
prefs = {'download.default_directory' :'/Users/nrpss/Downloads'}
options.add_experimental_option('prefs', prefs)

download_path = '/Users/nrpss/Downloads'

browser = webdriver.Chrome('chromedriver.exe', options=options)

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

params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_path}}

command_result = browser.execute("send_command", params)

print ("Headless Chrome Initiated")


### Below is ID for the Download link on webpage 

browser.find_element_by_id('downloadExportLink').click()

time.sleep(50)

def download_completed():
   for i in os.listdir('/Users/nrpss/Downloads'):
       if ".crdownload" in i:
           time.sleep(1)
 download_completed()

预期结果:文件应下载并保存在下载文件夹中。

标签: pythonpython-3.xseleniumselenium-webdriverselenium-chromedriver

解决方案


尝试添加download.prompt_for_download=Falsedownload.directory_upgrade=True你的汽车设置safebrowsing_for_trusted_sources_enabledFalse以及safebrowsing.enabled.

尝试将您的偏好更改为:

prefs = {'download.default_directory' :'/Users/nrpss/Downloads',
        "download.prompt_for_download": False,
        "download.directory_upgrade": True,
        "safebrowsing_for_trusted_sources_enabled": False,
        "safebrowsing.enabled": False
         }

options.add_experimental_option('prefs', prefs)

希望这对你有帮助!


推荐阅读