禁用所有使用ChromeDriver和Selenium的下载

时间:2019-12-26 17:26:10

标签: selenium selenium-chromedriver

使用ChromeDriver使用Selenium访问某些静态文件(例如hudoig.gov/sites/default/files/documents/2016-FW-1007.pdf(随机示例)时,该文件会自动下载到我的默认下载目录中。

是否有办法禁用此默认行为并防止文件被保存?谢谢。

NB:我的问题类似于以下未解决的问题,但就我而言,我实际上想禁用下载,即使单击下载链接时也是如此: Is it possible to disable file download in chrome using selenium

2 个答案:

答案 0 :(得分:1)

Preferences for ChromeDriver是实验性选择。

您可以明确设置下载首选项,并直接在Chrome浏览器中打开PDF文档。

例如:

from selenium import webdriver

options = webdriver.ChromeOptions()

prefs = {
    "download.open_pdf_in_system_reader": False,
    "download.prompt_for_download": True,
    "plugins.always_open_pdf_externally": False
}
options.add_experimental_option(
    "prefs", prefs
)
driver = webdriver.Chrome(
    options=options
)
driver.get(
"https://www.hudoig.gov/sites/default/files/documents/2016-FW-1007.pdf"
)
driver.close()

或者您可以设置下载位置以将文档写入虚拟设备文件,因为/dev/null有效地将其丢弃。

例如:

prefs = {
    "download.open_pdf_in_system_reader": False,
    "download.prompt_for_download": True,
    "download.default_directory": "/dev/null",
    "plugins.always_open_pdf_externally": False
}
options.add_experimental_option(
    "prefs", prefs
)

您可以将下载限制设置为block all downloads

prefs = {
    "download_restrictions": 3,
}
options.add_experimental_option(
    "prefs", prefs
)

答案 1 :(得分:1)

您可以采用的另一种方法是禁用浏览器的下载功能。即,配置here中讨论过的DownloadRestrictions策略。